当我尝试此操作时,将多个对象写入文件已正确完成。 但是当我尝试从文件读取多个对象时,它仅显示最后一个对象的数据。
将多个对象写入文件:-
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循环中用于生成多个对象。
答案 0 :(得分:0)
执行ofstream file("Simple.txt");
时,您将以写模式打开文件。
而且您正在为每次迭代做。
这意味着每次您写文件都从头开始写。即,您每次都覆盖文件。
您应该尝试以追加模式打开。
这可能会有帮助。
正如第一个评论所建议的那样,在每次迭代中打开和关闭文件也不是一个好主意。
希望这会有所帮助。
答案 1 :(得分:0)
...
std::ofstream file;
file.open("Simple.txt" | std::ofstream::app);
...
您必须以附加模式打开文件。
您还可以在循环之前声明文件句柄,然后仅读取值,然后在循环之后关闭文件句柄。