gpt4 book ai didi

c++ - 每次写入文件时如何在前面附加文本?

转载 作者:行者123 更新时间:2023-11-30 03:18:32 24 4
gpt4 key购买 nike

嘿,我正在处理 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/

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