C++ 无法将CStringW转换为CStringA
我正在从事一个项目,其中我研究了一个问题,即如何将多字节字符串(如日语)的C++ 无法将CStringW转换为CStringA,c++,string,mfc,cstring,mbcs,C++,String,Mfc,Cstring,Mbcs,我正在从事一个项目,其中我研究了一个问题,即如何将多字节字符串(如日语)的CStringW转换为CStringA 我正在使用LoadString()方法从字符串资源加载字符串。 我尝试了以下代码,但似乎不起作用 CStringW csTest; csTest.LoadString(JAPANESE_STRING); CStringA Msg = CStringA(csTest); // Msg has been returned blank string 及 我也试过了 wcstombs()也
CStringW
转换为CStringA
我正在使用LoadString()
方法从字符串资源加载字符串。
我尝试了以下代码,但似乎不起作用
CStringW csTest;
csTest.LoadString(JAPANESE_STRING);
CStringA Msg = CStringA(csTest); // Msg has been returned blank string
及
我也试过了
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);
谈论CStringA
而不指定编码是没有意义的
< > <代码> CW2A<代码>的第二个参数是一个传递到的内容(注意,代码> CW2A< /COD>本质上是一个方便的安全的C++ + RAI包装器。如果您遵循此API文档,您可以找到(即编码)。谢谢您的回答,但它不起作用,我在使用语句
CStringA strUtf8=CW2A(strUtf16,CP_UTF8)后获得垃圾值
您获得“垃圾值”可能是因为您不希望目标CStringA
中有UTF-8字节?因此,获得所需输出的最佳实践是什么?最佳实践是您向自己和您的问题中澄清您期望的“所需输出”的编码,并指定适当的“代码页”相应的值。谢谢它能工作。对不起我的错误,我使用了错误的代码页
// strUtf16 is a CStringW.
// Convert from UTF-16 to UTF-8
CStringA strUtf8 = CW2A(strUtf16, CP_UTF8);