嘿,我正在处理 C++ 中的文件处理... 我是文件处理的新手....每次写入文件时我都想在文件前面附加内容.......
我已经使用.....打开了一个文件 fstream fi("user.txt",ios::app);
但这总是在文件末尾附加内容.....
我用.....写了一个c++代码
Fstream fi("user.txt",ios::app); fi<<"约翰是个好 child "<
Fstream fi("user.txt",ios::app);
fi<<"john is a great boy"<<endl;
实际结果:它总是在文件末尾附加我的内容...
预期:它应该始终在文件前面附加内容....
最佳答案
第一个问题是:您为什么要这样做?
然后对于文件处理,这将变得棘手,因为这不是文件在操作系统级别上的工作方式——虽然通常 native 支持附加,但前置不是这种情况(因此在 C++ STL 中不支持任何一个)。所以你需要将新行写到一些临时文件中,然后一直追加以前的内容。在 Windows、Linux、BSD 和衍生产品上没有办法。
如果您真的坚持,您可以编写自己的基于标准文件流的流类,从而隐藏所有这些工作。另一种变体可能只读取一次输出文件,将所有行保存在内存中,适本地处理新行,并在关闭流对象时仅将这些行打印回文件一次。缺点:如果应用程序崩溃,可能会丢失相当多的行。您可以使用 std::deque
并在新行前面添加或以相反的顺序将行读入 std::vector
,附加新行然后打印到使用反向迭代器的文件。
不过,您最好只附加到文件中。然后,您可能会编写一个单独的应用程序来反转行顺序 - 优点:您只需进行一次反转工作,从后面读取可以非常有效地完成,并且可以编写新的输出文件,你只会再次追加。或者,您可以编写自己的文件查看器应用程序,以倒序显示行(再次从后面读取,如果大小太大,或者一次将所有行保存在内存中)。
关于c++ - 每次写入文件时如何在前面附加文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54667641/