Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ base64编码/解码的Unicode版本_C++_Base64 - Fatal编程技术网

C++ base64编码/解码的Unicode版本

C++ base64编码/解码的Unicode版本,c++,base64,C++,Base64,我正在使用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 &l

我正在使用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;
我怎样才能继续使用上述功能

仅仅是改变

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)

base64将二进制数据编码为文本。因此,您只需要使用将宽字符转换为相应的字节,就可以了。

您尝试过其他编码器吗?这一个给出了“仅仅改变”不起作用的症状是什么?我可能希望字符串被截断,因为长度是用字符而不是字节指定的,但如果不是这样,则应该可以。您不应该向
std
命名空间中添加内容。通过支持Unicode,您的意思是希望对wstring(L“ABC”)进行base64编码吗→ “QUJD”),或者您希望将base64编码为wstrings(“ABC”→ L“QUJD”)?在定义“它们对应的字节”时,您必须小心。给定
\u UNICODE
宏,我们可以假设Windows,然后是UTF-16,但这只是一个合理的假设。@MSalters:tnx用于说明。
std::string base64_encode(unsigned TCHAR const* , unsigned int len);
std::tstring base64_decode(std::string const& s);