在二进制模式下读取字符的问题,╡

时间:2014-05-07 15:11:05

标签: c++ ascii

我在使用以ios :: binary模式编写的文本文件中读取此字符时遇到问题。我使用符号unsigned char (181)将其写入文件,但是当我尝试使用此行获取十进制值时

cout << text[i] << " " << (unsigned int)text[i] << " " << (int)text[i] << endl;

我离开了这个..

╡ 4294967221 -75

这似乎发生在我的所有值超过127.并且该符号是与我使用的数字相对应的正确符号,但出于某种原因,当我尝试将其转换为unsigned int或int时,我得到了一个错误数。我需要对ascii表中超过127的值进行特殊处理吗?

1 个答案:

答案 0 :(得分:2)

首先转换为unsigned char,然后转换为int(或unsigned int)。显然,在您的系统上,普通char已签名,这意味着它采用[-128, 127]范围内的值(通常假设为8位char)。