2

我的代码很简单:

#include <iostream>
using namespace std;
//Some codes here...
bool somefunction(){
    cout<<"单元格";
    return false;
}

这就是我得到的:

错误 C2143:语法错误:缺少“;” 在“返回”之前;
错误 C2001:换行符是常量;

此外,如果我改成"单元格"“cell”之类的英文版本,它就可以完美运行;

4

4 回答 4

5

编译器错误表明您的编译器不支持源代码中的 Unicode 字符。您必须转义它们,使用宽字符常量,并且wcout

wcout << L"\x5355\x5143\x683c";

如果您需要以特定编码(例如 gb2312)输出字符,请在字符串文字中使用该编码:

cout << "\xb5\xa5\xd4\xaa\xb8\xf1"; // string encoded with GB2312
于 2012-09-18T01:07:57.237 回答
1

要使用非英语字符集,您应该使用std::wcout打印宽字符,像这样

#include <iostream>
using namespace std;
//Some codes here...
bool somefunction(){
  wcout<< L"单元格";
  return false;
}

cout并确保不要wcout在同一个程序中混合使用两者。

于 2012-09-18T01:06:05.070 回答
0

使用 wcout 和 Unicode 文字(L“单元格”)。即使您只处理英文字符,这也是一种很好的做法。也使用 wstring。

编辑:实际上另一个问题可能是您以非Unicode编码存储文件,因此字符丢失。告诉您的编辑器将文件存储为 Unicode。

另一个问题可能是控制台(或 wcout)没有正确显示 Unicode 字符。如果将它们显示在消息框中(使用 MessageBoxW),它们将正确显示。

于 2012-09-18T01:08:29.467 回答
0

您应该始终将源代码保存为带有 BOM 的 UTF-8。

于 2016-04-30T09:57:37.757 回答