Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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++ 无法将CStringW转换为CStringA_C++_String_Mfc_Cstring_Mbcs - Fatal编程技术网

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);