2

小さな 1KB のバイナリ ファイルをバッファに読み込んでから、そのバッファをディスクに書き戻そうとしているだけです。一部のファイルでは、出力ファイルが入力ファイルと完全に異なるようですが、何が間違っていますか? どうもありがとうございました。

std::ifstream myfile;
myfile.open (testinput.rar);            
myfile.seekg (0, myfile.end);
filesize = myfile.tellg();
myfile.seekg (0, myfile.beg);

char *mybuffer= new char[filesize];
myfile.read(mybuffer,filesize); 
myfile.close();             

ofstream myfile3;
myfile3.open ("testoutput.rar");
for(unsigned int i=0; i<filesize; i++)
    myfile3 << mybuffer[i]; 
myfile3.close();    
4

2 に答える 2

1

ファイルをバイナリとして開く必要があります。

myfile.open ("testinput.rar", std::ios::binary);
于 2013-10-23T15:01:47.863 に答える
1

myfile3バイナリモードで開く必要があります:

myfile3.open("testoutput.rar", ios::out | ios::binary);

さらに、write()ファイルの変更に使用することを検討することもできます。

myfile3.write(mybuffer[i], sizeOfBuffer);
于 2013-10-23T15:01:54.760 に答える