2016-02-26 29 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。