读取文件不会显示刚刚写入的更改
Reading a file does not show changes that were just written
我是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 2n";
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<<"nnFile 1 after data integration: nn";
show("file1.txt");
}
当我单独检查时,文件成功地附加了file1中的数据,但程序只打印其旧内容。谁能告诉我这可能是什么原因和补救方法?
在流f1
关闭之前,已经写入到它的内容可能驻留在缓冲区中。如果发生这种情况,对show
的最后一次调用将显示文件的旧内容,或者(可能更糟)显示新内容的不完整版本。
法拉盛可以做到这一点,正如Ed Heal在他的回答中建议的那样,但我认为正确的方法是在写作完成后立即关闭流f1
。(如果你愿意,f2
也一样。)在while
循环之后和最后一次调用show
之前添加以下行:
f1.close();
f2.close();
正在缓存
冲洗小溪,旧文件的气味就会消失。
见http://www.cplusplus.com/reference/ostream/ostream/flush/
相关文章:
- 从文本文件中读取并输入到数组结构中,然后显示读取的数据C++
- 通过显示一行星号来创建条形图,该条形图将读取数据的输入文件
- 从文本文件中读取数据并删除所有换行符空格,并在 C++ 控制台中显示
- 尝试使用 ifstream 读取数据后显示不正确的数字
- 尝试创建一个读取.txt文件,显示它,计数唯一单词的程序,并在使用了多少次的情况下显示独特的单词.C
- 从TextFile读取数据,并在控制台中显示
- c - 函数选择显示读取后stdin中有数据
- 从文本文件中读取行并显示在屏幕上
- 如何从文件中读取并将内容存储在动态 2D 数组中并以网格格式显示
- 使用 getline 函数读取文件,但第一列显示为空
- 无法使用 fstream 从二进制文件中读取字符串,而是显示奇怪的符号
- 通过列读取文本文件,并显示列值的所有数组
- 如果语句内部循环不读取完全正确的代表显示错误
- 从文本文件读取到显示到多个联系人
- 从文本文件中读取尺寸和表格内容后显示表格
- 读取 TGA 显示空值而不是颜色数据
- 使用 openCV 从 xml 文件中读取和显示矩阵
- 读取 C++ 中的文本文件不显示任何输出
- 显示异常,以读取TXT文件
- 读取显示到控制台的文本文件,然后追加文本文件