C ++读写文件会导致垃圾

时间:2013-10-23 14:55:49

标签: c++

我只是尝试将一个小的1KB二进制文件读入缓冲区,然后将缓冲区写回磁盘。似乎对于某些文件,outputfile与Inputfile完全不同,我做错了什么? 非常感谢你。

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();    

2 个答案:

答案 0 :(得分:1)

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

myfile.open ("testinput.rar", std::ios::binary);

答案 1 :(得分:1)

应以二进制模式打开

myfile3

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

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

myfile3.write(mybuffer[i], sizeOfBuffer);