[英]Missing data when reading binary file in C++
vector<byte> h;
ifstream fin(file.c_str(), ios::binary);
if(!fin)
return false;
byte b;
while(fin >> b)
h.push_back(b);
h
的長度為4021,而原始文件的長度為4096字節。 但是下面的代碼給出了4096個字節的字符串。 為什么?
ostringstream sout;
sout << fin.rdbuf();
string s = sout.str();
更新:
@ user2079303解決了我的問題,但是可以通過其他任何方式執行閱讀任務。 弄錯了太容易了。
當按字符讀取輸入流char(您的字節為char,對嗎?)時,標准流默認情況下會忽略空格。 您可以使用std :: noskipws停止忽略它們。
fin >> std::noskipws >> b;
注意: ios::binary
對此行為沒有任何影響,即使有人期望如此。 據我所知,它僅禁用翻譯行尾。
如果您不想擔心處理,則可以使用實現UnformattedInputFunction的函數。 cppreference有一個很好的示例,說明了如何使用istream :: read讀取二進制文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.