如果我這樣做了以下內容:爲什麼我不能用operator >>讀取fstream的二進制數據?
ifstream file;
file.open("somefile", ios::binary);
unsigned int data;
file >> data;
我流將始終將failbit
和data
將保持未初始化。但是,如果我讀取的是char
或unsigned char
,則表示流正常。 perror()
告訴我「結果太大」。
我在Google上看到的唯一一個建議是,operator>>
不應該用於二進制數據(更喜歡read()
),但我發現操作員更清潔,更易於使用 - 並且它不需要鑄造一切。
有人可以解釋這個問題嗎?
你的答案中有這樣的原因:「取決於int是32位還是64位」。目前,使用''的代碼是可移植的,您的建議不是。 –
Caleth
2017-08-31 11:03:23