我正在做一个项目,在这个项目中,我遇到了一个问题,那就是将多字节字符串(如日语)的CStringW
转换为CStringA
。
我正在使用LoadString()
方法从字符串资源加载字符串。我尝试了以下代码,但似乎不起作用。
CStringW csTest;
csTest.LoadString(JAPANESE_STRING);
CStringA Msg = CStringA(csTest); // Msg has been returned blank string
还有
std::string Msg = CW2A(csTest);// Msg has been returned blank string
我也试过wcstombs()
。
有人能告诉我如何将CStringW
转换为CString
吗?提前感谢。
1条答案
按热度按时间kiz8lqtg1#
CStringW
存储Unicode UTF-16字符串。您希望
CStringA
使用什么编码?是否需要UTF-8?
在这种情况下,您可以执行以下操作:
讨论
CStringA
而不指定编码是没有意义的。CW2A
的第二个参数是传递给WideCharToMultiByte()
Win32 API asCodePage
的内容(注意CW2A
本质上是一个方便安全的围绕此API的C++ RAII Package 器)。如果您遵循此API文档,您可以找到several "code page" values(即编码)。