繁体   English   中英

C ++使用istringstream将int作为无符号字符读取

[英]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 shortstd::uint16_t ,然后转换为unsigned char

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM