A B*_*A B 4 c++ string mfc cstring mbcs
我工作的一个项目,我已经在转换的一个问题stucked CStringW到CStringA像日语多字节字符串.
我正在使用LoadString()Method 从字符串资源加载字符串.我尝试过以下代码,但似乎没有用.
CStringW csTest;
csTest.LoadString(JAPANESE_STRING);
CStringA Msg = CStringA(csTest); // Msg has been returned blank string
Run Code Online (Sandbox Code Playgroud)
和
std::string Msg = CW2A(csTest);// Msg has been returned blank string
Run Code Online (Sandbox Code Playgroud)
我也试过
wcstombs()了.
任何人都可以告诉我如何转换CStringW为CString?提前致谢.
CStringW存储Unicode UTF-16字符串.
你期望什么编码CStringA?
你想要UTF-8吗?
在这种情况下,您可以这样做:
// strUtf16 is a CStringW.
// Convert from UTF-16 to UTF-8
CStringA strUtf8 = CW2A(strUtf16, CP_UTF8);
Run Code Online (Sandbox Code Playgroud)
谈论CStringA没有指定编码是没有意义的.
第二个参数CW2A是传递给WideCharToMultiByte()Win32 API的内容CodePage(注意,这CW2A本质上是围绕此API的方便的安全C++ RAII包装器).如果您遵循此API文档,您可以找到几个"代码页"值(即编码).