gpt4 book ai didi

c++ - 读取文件不显示刚刚写入的更改

转载 作者:行者123 更新时间:2023-11-30 01:53:56 27 4
gpt4 key购买 nike

我是 C++ 新手。我制作了以下程序,该程序成功运行并完成了预期的工作,即将一个文件的数据附加到另一个文件。

#include<iostream>
#include<fstream>
#include<stdio.h>

using namespace std;

void show(const char *file)
{
char data[90];
fstream f(file,ios::in);
while(!f.eof())
{
f.getline(data,90,'\n');
puts(data);
}
}
int main()
{
char data[90];
cout<<"Contents of files before data integration.\nFile 1:\n";
show("file1.txt");
cout<<"\nFile 2\n";
show("file2.txt");
fstream f1("file1.txt",ios::out|ios::app);
fstream f2("file2.txt",ios::in);
while(!f2.eof())
{
f2.getline(data,90,'\n');
f1<<data<<'\n';
}
cout<<"\n\nFile 1 after data integration: \n\n";
show("file1.txt");
}

正如我单独检查的那样,文件成功地将数据附加到 file1 中,但程序只打印其旧内容。任何人都可以告诉我这可能是什么原因以及同样的补救措施。

最佳答案

在流 f1 关闭之前,已写入其中的内容可能驻留在缓冲区中。如果发生这种情况,最后一次调用 show 将显示文件的旧内容或(可能更糟)新内容的不完整版本。

正如 Ed Heal 在他的回答中所建议的那样,冲洗可以解决问题,但我认为正确的方法是在写入完成后立即关闭流 f1。 (如果您愿意,f2 也是如此。)在 while 循环之后和最后一次调用 show 之前添加以下行:

f1.close();
f2.close();

关于c++ - 读取文件不显示刚刚写入的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22582861/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com