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

myfile3应该以二进制模式打开:

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

此外,您可能需要考虑使用write()修改文件:

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

您必须将文件作为二进制文件打开。

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