重置stream,但保留先前的数据

Reset ofstream but preserve previous data

本文关键字:数据 保留 stream 重置      更新时间:2023-10-16

是否有一种方法可以将流程重置回流的开头,而不是在数据上写入?我知道如何将流重置为开始,但随后它写入所有旧数据。我意识到我可以保存初始数据,直到我准备好编写它,但这是很大的,我不确定是否会很好地存储。我想的另一个选项是用我的初始大数据创建一个临时文件,将我的新数据写入实际文件,然后将临时文件复制并删除。我想我只是在寻找比这两个更方便的东西。不幸的是,更改我获取数据的方式并不是一个选择。使用此代码:

#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, const char * argv[])
{
    ofstream out_stream("~/Desktop/test_out.txt");
    out_stream <<
    "This is some test filen" <<
    "I want to reset streamn" <<
    "Start working......nown";
    out_stream.seekp(0, ios_base::beg);//this sets to beginning but erases old data
    out_stream <<
    "I hope this workssssssn";
    out_stream.close();
    return 0;
}

我想要此输出:

I hope this workssssss
This is some test file
I want to reset stream
Start working......now

您似乎要"预先启动"文件。那是不可能的。新文本将覆盖已经存在的内容。

您必须将新文本写入新文件,然后将文本从原始文件写入新文件。