0

我对 C++ 相当陌生,正在尝试读写二进制文件。我使用了 read 和 write 函数从一个文件中读取文本并将其输出到一个新文件中。但是,以下字符始终出现在创建的文本文件“ÌÌ”的末尾。指示文件结尾的特定字符是否保存在字符缓冲区中?

int main(){
ifstream myfile("example.txt", ios::ate);
ofstream outfile("new.txt"); 
ifstream::pos_type size; 
char buf [1024]; 

if(myfile.is_open()){       
    size=myfile.tellg(); 
    cout<<"The file's size is "<<(int) size<<endl;
    myfile.seekg(0,ios::beg);
    while(!myfile.eof()){
        myfile.read(buf, sizeof(buf)); 
    }
    outfile.write(buf,size); 
    }
else 
    cout<<"Error"<<endl;

myfile.close();
outfile.close();
cin.get();
return 0;

}
4

1 回答 1

2

不是您的代码的唯一问题(在大于 1024 字节的文件上尝试),但由于您正在执行二进制 I/O,因此您需要

ifstream myfile("example.txt", ios::ate|ios::binary);
ofstream outfile("new.txt", ios::binary);
于 2013-09-27T22:18:44.053 回答