C++读取和写入文件会导致垃圾

C++ reading and writing a file results in garbage

本文关键字:文件 读取 C++      更新时间:2023-10-16

我只是试图将一个小的 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();    

您必须以二进制形式打开文件。

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

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

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

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

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