【发布时间】:2019-02-13 10:15:39
【问题描述】:
嘿,我正在处理 C++ 中的文件处理... 我是文件处理的新手....我想在每次写入文件时将内容附加到文件前面............
我用.....打开了一个文件 fstream fi("user.txt",ios::app);
但这总是在文件末尾附加内容.....
我已经使用.....编写了一个 c++ 代码
Fstream fi("user.txt",ios::app); fi
Fstream fi("user.txt",ios::app);
fi<<"john is a great boy"<<endl;
实际结果:它总是在文件末尾附加我的内容...
预期:它应该始终在文件前面附加内容....
【问题讨论】:
-
“它应该始终将内容附加到文件的前面” - 如果不清楚,description of
ios::app什么都不是。它说“在每次写入之前寻找流的 end”。因此,您没有使用适当的开放模式。现在是坏消息:没有开放模式可以满足您的需求。您必须自己管理读写操作。 -
您可以通过读/写前向缓冲来完成此操作,其中两个块的大小与您的前置数据大小相同。读取两个块(或直到 EOF)前置数据的大小。然后写头,然后写block1,然后用另一帧加载block1,然后写block 2。然后用另一个帧加载block2,然后写入block1,等等。这一直持续到到达EOF并且你已经写了你的最后一个块。我不建议这样做,因为如果发生读/写错误,它很容易损坏,但它可以缓解中间文件。祝你好运。
-
最好将数据附加到文件末尾,然后在完成后反转文件。文件被设计为附加,您尝试做的事情将非常效率低下且难以编程。
标签: c++ window file-handling