2016-02-26 33 views
-1

我有以下代碼輸出二進制數據丟失一些字節

fin.close(); 
open = inName + ".xxx"; 
fin.open(open.c_str(),ios::binary); 
fin>>noskipws; 

while (fin>>_4byte[0]) 
{ 
    fout<<_4byte[0]; 
} 

我也有以二進制模式FOUT開得。 但是,這段代碼運行得很完美,但是在它之前添加一個循環後突然停止輸出所有數據,它在33〜55字節左右的某處丟失。 我試圖刪除所有其他fin.openfin.close保持這一個,但我一直得到同樣的問題,這是輸出文件丟失了一些數據。

_4byteunsigned char array

+0

您是否每次都故意讀取相同的'unsigned char',或者您是否想讀入'_4byte [1]'等等? – AndyG

+2

考慮提供[MCVE](http://stackoverflow.com/help/mcve)。 – BeeOnRope

+0

對於二進制數據,我真的推薦使用read()而不是'>>'運算符。這裏有另一篇文章討論各種選擇。 http://stackoverflow.com/questions/6774825/reading-from-ifstream-wont-read-whitespace –

回答

0

所以我解決了它,問題是我只需在while循環後添加fin.close()。我不確定它爲什麼發生。有人可以解釋原因嗎?

編輯: 好吧,這不是問題。 此代碼之後,我有一個cin,它實際上停止寫入時,如果它尚未寫入尚未達到cin。