“cout”无法使用汉字

时间:2012-09-18 01:01:30

标签: c++ character cout

我的代码就像这些一样简单:

#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”这样的英文版本,它的效果非常好;

4 个答案:

答案 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;
}

请务必不要在同一个程序中混用coutwcout

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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