4
我使用base64編碼/自http://www.adp-gmbh.ch/cpp/common/base64.htmlUnicode版本Base64編碼/
它工作得很好用下面的代碼進行解碼的解碼。
const std::string s = "I Am A Big Fat Cat" ;
std::string encoded = base64_encode(reinterpret_cast<const unsigned char*>(s.c_str()), s.length());
std::string decoded = base64_decode(encoded);
std::cout << _T("encoded: ") << encoded << std::endl;
std::cout << _T("decoded: ") << decoded << std::endl;
然而,當涉及到Unicode
namespace std
{
#ifdef _UNICODE
typedef wstring tstring;
#else
typedef string tstring;
#endif
}
const std::tstring s = _T("I Am A Big Fat Cat");
如何我還可以利用上面的功能呢?
僅僅改變
std::string base64_encode(unsigned TCHAR const* , unsigned int len);
std::tstring base64_decode(std::string const& s);
將無法正常工作。
(我希望BASE64_ENCODE返回ASCII。因此,的std :: string應該用來代替的std :: tstring)
你試過另一個編碼器了嗎?這一個給`std :: string的http://code.google.com/p/stringencoders/source/browse/trunk/src/modp_b64.h – 2011-01-11 03:56:19
你的「只是改變」不起作用的症狀是什麼?我可能期望字符串被截斷,因爲長度是用字符而不是字節來指定的,否則應該是OK的。 – 2011-01-11 04:27:10