我的代码很简单:
#include <iostream>
using namespace std;
//Some codes here...
bool somefunction(){
cout<<"单元格";
return false;
}
这就是我得到的:
错误 C2143:语法错误:缺少“;” 在“返回”之前; 错误 C2001:换行符是常量;
此外,如果我改成"单元格"
“cell”之类的英文版本,它就可以完美运行;
编译器错误表明您的编译器不支持源代码中的 Unicode 字符。您必须转义它们,使用宽字符常量,并且wcout
:
wcout << L"\x5355\x5143\x683c";
如果您需要以特定编码(例如 gb2312)输出字符,请在字符串文字中使用该编码:
cout << "\xb5\xa5\xd4\xaa\xb8\xf1"; // string encoded with GB2312
要使用非英语字符集,您应该使用std::wcout
打印宽字符,像这样
#include <iostream>
using namespace std;
//Some codes here...
bool somefunction(){
wcout<< L"单元格";
return false;
}
cout
并确保不要wcout
在同一个程序中混合使用两者。
使用 wcout 和 Unicode 文字(L“单元格”)。即使您只处理英文字符,这也是一种很好的做法。也使用 wstring。
编辑:实际上另一个问题可能是您以非Unicode编码存储文件,因此字符丢失。告诉您的编辑器将文件存储为 Unicode。
另一个问题可能是控制台(或 wcout)没有正确显示 Unicode 字符。如果将它们显示在消息框中(使用 MessageBoxW),它们将正确显示。
您应该始终将源代码保存为带有 BOM 的 UTF-8。