簡體   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