我尝试使用 L"string",但它不起作用。
#include <iostream>
using namespace std;
int main(){
wstring wstr = L"你好";//[Error] converting to execution character set: Illegal byte sequence
wcout<<wstr<<endl;
}
使用 wcin 并输入中文工作正常。
#include <iostream>
using namespace std;
int main(){
wstring wstr;
wcin>>wstr;//Input Chinese is OK
wcout<<wstr<<endl;
}
如何将中文初始化或分配给wstring?
编辑 :我尝试了一些在线编译器。他们都可以编译,但都输出“??”。
例如cpp.sh jdoodle onlinegdb repl.it
编辑 2 :我安装了 g++ i868 MinGW-W64 8.1.0。使用 Visual Studio 将 cpp 文件保存为 utf8 格式。然后使用命令行编译它。它仍然没有输出。
最佳答案
您的编译器显然不喜欢其源文件中的 Unicode 字符。尝试使用 Unicode 转义初始化您的字符串,而不是:
wstring wstr = L"\u4E2D\u6587"; // These MAY be the correct codes.
其中
4E2D
和 6587
被替换为您想要的字符的实际十六进制值。 (抱歉,我无法访问汉字的完整 Unicode 表:我尝试将它们粘贴到我的编译器中,这些是它在翻译时给我的值。)给出的 Unicode 值适用于您问题中的字符串(中文);对于您发布的代码中的(不同的 - 你好),使用
L"\u4F60\u597D"
。另请参阅@MarekR 的答案。
关于c++ - 如何将中文初始化或分配给wstring?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58138095/