如何使用g ++将≠打印到终端?

时间:2019-01-18 13:03:48

标签: c++ netbeans g++ mingw special-characters

我想在终端上打印。我尝试过

cout << '\u2248' << endl;
cout << '\U00002248' << endl;
cout << '≠' << endl;

给出

14846344
14846344
14846368

我尝试用双引号代替单引号

Ôëê
Ôëê
Ôëá

该怎么办?我很好奇我得到的输出的解释是什么?我正在运行Netbeans 9,但也直接通过g ++从命令行进行了测试。我认为这应该可行,因为echo ≠在Windows命令提示符下产生了正确的输出。

1 个答案:

答案 0 :(得分:1)

因此,在C ++中,就像在普通C中一样,默认情况下,我们只能使用ASCII字符。 Char 变量仅包含8位(1字节)来存储值,因此最多可以使用一个char变量对2 ^ 8 = 256个不同的符号进行编码。 单引号(如“ a”)存储char变量,因此可以在其中将其仅放置ASCII字符。您的字符不是ASCII表的一部分,我们需要更改编码。

仅打印(而不存储/处理)您的字符,您应该使用其他编码,例如UTF-8。您可以通过编程方式做到这一点:

std::setlocale(LC_ALL, /*some system-specific locale name, probably */ "en_US.UTF-8");
std::cout << "\u2260" << std::endl;

或通过g ++的命令行选项(例如 -finput-charset = UTF-16 )。 如您所见,我使用双引号将非ASCII符号打印到控制台。