[英]C++ Reading ints as unsigned chars using istringstream
当使用std::istringstream
从文件中读取灰色像素值(0-255)时,我注意到一个奇怪的行为,我无法理解发生了什么。
为了节省内存,我想将这些值读入无符号字符(因为它们具有相同的0-255范围)。 但是,似乎正在进行某种转换/截断。
输入文件:
194
194
155
155
124
194
这是我的代码:
getline(fp, line);
unsigned char temp;
istringstream iss(line);
iss >> temp;
例如,当文件中的值为194
,temp的整数值为49
...
什么类型的铸件正在进行?
没有转换,这种行为是由于重载。
恰好为char
类型重载std::basic_istream::operator>>
,一次只提取一个字符 - 1
,ASCII值为49
。 这是您想要的行为,当您正在读取单个字符时,并且假设您正在提取到字符类型时,您需要这样做。
要将文本读取为以空格分隔的数字,必须使用更大的类型进行提取,例如unsigned short
或std::uint16_t
,然后转换为unsigned char
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.