【问题标题】:Reset ofstream but preserve previous data重置 ofstream 但保留以前的数据
【发布时间】:2023-03-31 05:02:01
【问题描述】:

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

#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 file\n" <<
    "I want to reset stream\n" <<
    "Start working......now\n";

    out_stream.seekp(0, ios_base::beg);//this sets to beginning but erases old data

    out_stream <<
    "I hope this workssssss\n";

    out_stream.close();
    return 0;
}

我想要这个输出:

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

【问题讨论】:

    标签: c++ output ofstream


    【解决方案1】:

    您似乎想在文件中“添加”文本。那是不可能的。新文本将覆盖已有的内容。

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

    【讨论】:

      猜你喜欢
      • 2011-10-22
      • 1970-01-01
      • 2019-05-02
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-31
      • 2020-12-23
      相关资源
      最近更新 更多