【发布时间】:2012-07-13 04:21:36
【问题描述】:
我正在使用来自http://www.adp-gmbh.ch/cpp/common/base64.html的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::stringcode.google.com/p/stringencoders/source/browse/trunk/src/… -
你的“仅仅改变”不起作用的症状是什么?我可能希望字符串被截断,因为长度是用字符而不是字节指定的,否则应该没问题。
-
你不应该向
std命名空间添加东西。 -
支持 Unicode 是指要对 wstrings 进行 base64 编码 (L"ABC" → "QUJD"),还是要对 wstrings 进行 base64 编码 ("ABC" → L “QUJD”)?