我想在终端上打印≠
。我尝试过
cout << '\u2248' << endl;
cout << '\U00002248' << endl;
cout << '≠' << endl;
给出
14846344
14846344
14846368
我尝试用双引号代替单引号
Ôëê
Ôëê
Ôëá
该怎么办?我很好奇我得到的输出的解释是什么?我正在运行Netbeans 9,但也直接通过g ++从命令行进行了测试。我认为这应该可行,因为echo ≠
在Windows命令提示符下产生了正确的输出。
答案 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符号打印到控制台。