有没有办法将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
答案 0 :(得分:1)
您似乎希望将“前置”文本添加到文件中。那是不可能的。新文本将覆盖已经存在的内容。
您必须将新文本写入新文件,然后将原始文件中的文本写入新文件。