我有一个问题,我有一个无符号字符数组,我想打印它们但是当我使用cout时会打印一个不同的值。
数组包含二进制格式的值,no为0和1,但为表示巫婆字符。
要打印的数组:
[0] 147 unsigned char
[1] 252 'ü' unsigned char
[2] 170 'ª' unsigned char
[3] 194 'Â' unsigned char
[4] 108 'l' unsigned char
我得到了什么:
ô
ⁿ
¬
┬
l
当我把它写入文件时,表示是正确的,因为我在binay模式下打开了ofstream但是我找不到如何在cout中做同样的事情。
最好的问候
答案 0 :(得分:1)
您是code pages的受害者。
回到过去,我们所关心的只是简单的英文字符。对于这些字符,我们定义了ASCII字符集。它定义了128个字符(0到127十进制),可打印字符从32(空格)开始。方便的是,ASCII字符集适合7位。
通过使用未使用的第8位,可以使用值128到255执行某些操作。问题是,很多人同时考虑了这一点,因此有很多不同的方法可以使系统显示这些前128位字符,用于许多不同的语言。
最终所有这些都得到了标准化。前128个字符在任何地方都是相同的,但128和以上的字符在代码页中定义。
与chris和πάντα ῥεῖ一样,Windows控制台使用的代码页(code page 437)与使用Windows-1252的大多数其他Windows相同。
总之,在输入和输出的十进制值相同的意义上,您的输出是正确的,但它看起来是错误的,因为您在不同的代码页中查看它们。