【发布时间】:2015-11-18 16:48:47
【问题描述】:
当使用 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...
正在进行什么类型的投射?
【问题讨论】:
-
您可以使用未格式化的输入:
std::istream::get表示字节。 -
问题不是修复代码,而是发生了哪种类型的转换/截断?
-
请更清楚您的输入数据。目前我们只能猜测它的格式,因为“从文件中读取值”实际上什么也没告诉我们!我的猜测是通过 ASCII 以人类可读的十进制表示的 0
-
/OT @LightnessRacesinOrbit 看来我又老又跛了 ;-) ...
标签: c++ file-io casting unsigned-char istringstream