我的代码就像这些一样简单:
#include <iostream>
using namespace std;
//Some codes here...
bool somefunction(){
cout<<"单元格";
return false;
}
这就是我得到的:
error C2143: syntax error: missing ';' before 'return'; error C2001: newline is constant;
此外,如果我将"单元格"
更改为像“cell”这样的英文版本,它的效果非常好;
答案 0 :(得分:5)
编译器错误表明您的编译器不支持源代码中的Unicode字符。你必须逃避它们,使用宽字符常量和wcout
:
wcout << L"\x5355\x5143\x683c";
如果您需要输出特定编码的字符(例如gb2312),请在字符串文字中使用该编码:
cout << "\xb5\xa5\xd4\xaa\xb8\xf1"; // string encoded with GB2312
答案 1 :(得分:1)
要使用非英文字符集,您应该使用std::wcout
来打印宽字符,如此
#include <iostream>
using namespace std;
//Some codes here...
bool somefunction(){
wcout<< L"单元格";
return false;
}
请务必不要在同一个程序中混用cout
和wcout
。
答案 2 :(得分:0)
使用wcout和Unicode文字(L“单元格”)。即使您只处理英文字符,这也是一种很好的做法。也可以使用wstring。
编辑:实际上另一个问题可能是您以非Unicode编码存储文件,因此字符丢失。告诉编辑器将文件存储为Unicode。
另一个问题可能是控制台(或wcout)没有正确显示Unicode字符。如果您在消息框中显示它们(使用MessageBoxW),它们将正确显示。
答案 3 :(得分:0)
您应始终将源代码保存为带有BOM的UTF-8。