我的代码就像这样简单:
#include <iostream>
using namespace std;
//Some codes here...
bool somefunction(){
cout<<"单元格";
return false;
}
我得到的错误信息如下:
error C2143: 语法错误:在 'return' 之前缺少 ';'; error C2001: 换行符是常量;
此外,如果我将"单元格"
更改为英文版本,如"cell",它可以完美运行;
wcout
。wcout << L"\x5355\x5143\x683c";
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
。
cout
还是 wcout
并不重要。代码无法编译,因为编译器无法处理给定字符集中的该字符串。 - David Rodríguez - dribeas你应该始终将源代码保存为带有BOM的UTF-8格式。
使用wcout和Unicode字面量(L"单元格")。即使您只处理英文字符,这也是一个好习惯。还要使用wstring。
编辑:实际上,另一个问题可能是您将文件存储在非Unicode编码中,因此字符丢失。告诉您的编辑器将文件存储为Unicode。
另一个问题可能是控制台(或wcout)无法正确显示Unicode字符。如果您在消息框中显示它们(使用MessageBoxW),则它们将被正确显示。
std::wcout
。 - StoryTeller - Unslander Monica