【发布时间】:2014-08-05 21:16:44
【问题描述】:
我有一个问题,我有一组无符号字符,我想打印它们,但是当我使用 cout 时会打印一个不同的值。
该数组包含二进制格式的值,没有 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 中找不到如何做同样的事情。
最好的问候
【问题讨论】:
-
让我猜猜。你在 Windows 上。控制台正在使用CP-437,而您用来读取文件的程序正在使用Windows-1252。这两个字符具有相同的数字表示,但解释不同。
-
@chris 甚至还有一个SO answer。
-
我非常不同意the linked duplicate question 也回答了这个问题。链接的问题是关于不可打印的 ASCII 字符,而这个问题是关于 extended ASCII 字符集。链接的问题与代码页无关,而这正是这里的问题。不幸的是,由于这个原因,我没有足够的代表投票重新开放。