例如:
cout << "你好" << endl;
例如:
cout << "你好" << endl;
这取决于平台和命令提示符的编码。
话虽如此,您可能会在以下情况下更加顺利:
std::wcout << L"你好" << std::endl;
如果您在谈论Windows,那么您就在谈论控制台窗口。
Windows控制台窗口是基于Unicode的,更具体地说是UCS-2(基本多语言平面,本质上是原始的16位Unicode)。
与其他答案中所建议的相反,您不能通过std::wcout
比使用std::cout
获得更多输出结果。标准的宽输出流只是将其翻译为程序的单字节执行字符编码。在Windows中,默认情况下是OEM字符编码(可以通过未记录的注册表键进行配置)。
但是,您可以通过Windows API的控制台函数输出Unicode。
注意:将控制台窗口设置为UTF-8并不是一个好主意。然后,[cmd.exe]命令解释器会默默地忽略大多数命令。至少在Windows XP及更早版本中是如此。
我只是将OEM设置为Windows ANSI Western(通过提到的未记录的注册表键),这对于大多数目的都有效,但当然不适用于中文。它的代码页是1252。或者,您可以通过每个命令解释器实例中的命令chcp 1252
以及其他方式手动执行此操作。
祝您好运。
这取决于操作系统和实现方式。目前活跃的C++标准甚至没有提到Unicode。
在Windows上,我相信您可以使用宽字符版本。然后您的代码需要是:
std::wcout << L"ni3 hao3" << std::endl;
然而,您可能需要特别输入Unicode字符代码,因为您用于编写C++源代码的代码集可能不是Unicode。
这完全取决于您使用的控制台/ shell。
有些shell可以配置为使用UTF-8(我很久以前做过一次),因此可以实现,但是我忘记了详细信息。
在任何人能够更具体之前,我们需要知道您正在使用的shell以及shell运行的平台(每个版本的完整详细信息)。
Windows控制台支持Unicode,但只是部分支持。例如,它不支持从右到左的语言。
您使用cout
的示例未输出Unicode。请改用wcout
。或者使用WriteConsoleW。