C ++输出流到文件不起作用

时间:2017-11-04 07:41:02

标签: c++ file ofstream

我的代码如下。缓冲区有数据,但fout2.write没有做任何事情。文件已创建且为空。

ofstream fout2(fname, ios::binary);
fout2.open(fname, ios::binary | ios::in | ios::out);
if (fout2.is_open()) {
    //problem is here   //write the buffer contents
    fout2.write(rmsg.buffer, rmsg.length);
    fout2.flush();
    memset(rmsg.buffer, 0, sizeof(rmsg.buffer)); //clear the buffer

2 个答案:

答案 0 :(得分:1)

您可能忘记关闭该文件。您可以通过

来完成
fout2.close()

或者只是关闭fout2的范围:

{
    ofstream fout2(fname, ios::binary);
    fout2.open(fname, ios::binary | ios::in | ios::out);
    if (fout2.is_open()) {
         fout2.write(rmsg.buffer, rmsg.length);
         //out2.flush(); // no need for this
         memset(rmsg.buffer, 0, sizeof(rmsg.buffer)); //clear the buffer
    }
}

答案 1 :(得分:1)

如果您计划同时使用ios::in所暗示的输入和输出,则应使用fstream,而不是ofstream。然后你应该在构造函数中传递所有打开的模式,而不需要调用open()

fstream fout2(fname, ios::binary | ios::in | ios::out);