如何在C ++中从文件读取/写入多个对象?

时间:2018-10-28 22:01:39

标签: c++ ubuntu

当我尝试此操作时,将多个对象写入文件已正确完成。 但是当我尝试从文件读取多个对象时,它仅显示最后一个对象的数据。

将多个对象写入文件:-

for(int i=0;i<n;i++)
{

    s[i].getdata();

    ofstream file("Simple.txt");

    if(file.is_open())
    {
        cout<<"File created"<<endl; 
        file.write((char*)&s[i],sizeof(s[i]));
        file.close();
    }
    else
    {
        cout<<"File not Open../"<<endl;
    }

}

其中,s是对象        在for循环中用于生成多个对象。

2 个答案:

答案 0 :(得分:0)

执行ofstream file("Simple.txt");时,您将以写模式打开文件。 而且您正在为每次迭代做。 这意味着每次您写文件都从头开始写。即,您每次都覆盖文件。 您应该尝试以追加模式打开。 这可能会有帮助。

正如第一个评论所建议的那样,在每次迭代中打开和关闭文件也不是一个好主意。

希望这会有所帮助。

答案 1 :(得分:0)

...
std::ofstream file;

file.open("Simple.txt" | std::ofstream::app);
...

您必须以附加模式打开文件。

您还可以在循环之前声明文件句柄,然后仅读取值,然后在循环之后关闭文件句柄。