读取文件不会显示刚写入的更改 我是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"); } #包括 #包括 #包括 使用名称空间std; 无效显示(常量字符*文件) { 字符数据[90]; fstream f(文件,ios::in); 而(!f.eof()) { f、 getline(数据,90'\n'); (数据); } } int main() { 字符数据[90]; cout

读取文件不会显示刚写入的更改 我是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"); } #包括 #包括 #包括 使用名称空间std; 无效显示(常量字符*文件) { 字符数据[90]; fstream f(文件,ios::in); 而(!f.eof()) { f、 getline(数据,90'\n'); (数据); } } int main() { 字符数据[90]; cout,c++,fstream,C++,Fstream,If正在缓冲它 冲洗溪流,旧文件的气味就会消失 如果正在对其进行缓冲,请参见 冲洗溪流,旧文件的气味就会消失 请参见直到流f1关闭,写入其中的内容可能会驻留在缓冲区中。如果发生这种情况,最后一次调用show将显示文件的旧内容,或者(可能更糟)新内容的不完整版本 正如Ed Heal在回答中所建议的那样,Flushing可以做到这一点,但我认为正确的方法是在编写完成后立即关闭流f1。(如果您愿意,f2,也一样。)在while循环之后和最后一次调用show之前添加以下行: f1.close(); f2

If正在缓冲它

冲洗溪流,旧文件的气味就会消失

如果正在对其进行缓冲,请参见

冲洗溪流,旧文件的气味就会消失


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

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

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

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

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

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

请解释一下,如果“程序只打印它的旧内容”,它是如何“完成它的预期任务”的,我的意思是你在问什么?这与成为“Linux上的新手”有什么关系,甚至是Linux?我已经提到,它在文件1中附加了我单独检查过的内容!请使用
g++-Wall-g
进行编译,并学习如何使用
gdb
调试器。我想Ed可能已经直觉地发现了您的潜在问题,但我也敦促您使用
std::endl
而不是
\n
.P请解释一下,如果“程序只打印它的旧内容”,它是如何“完成预期任务的”,我的意思是你在问什么?这与成为“Linux新手”有什么关系,甚至是Linux?我已经提到,它在文件1中附加了我单独检查过的内容!请使用
g++-Wall-g
进行编译,并学习如何使用
gdb
调试器。我想Ed可能已经直觉地发现了您的潜在问题,但我也敦促您使用
std::endl
而不是
\n