[英]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.