0

我正在寻找一种简单的方法来将某些内容写入已经存在的文本文件的第一行。我尝试像这样使用ofstream:

ofstream textFileWriter("Data/...txt");
if (textFileWriter.is_open())
{
    textFileWriter << "HEADER: stuffstuff";
}

但它会删除该文件中曾经存在的所有内容,即使 ofstream 不是用 std::ofstream::trunc 构造的。我不能使用 std::ofstream::app,因为写入第一行很重要。

将整个文本文件复制到已经有该行的向量中,然后将其写回将是我的最后一个选择,但我真的想避免这种情况,因为文本文件非常大。

4

1 回答 1

2

您不能简单地“附加”到文件的开头。

常见的解决方案是打开一个新(临时)文件,写入新文件头,将原始文件的其余部分写入临时文件,然后将临时文件“重命名”(使用 OS 系统调用)作为原始文件。

或者正如您在问题中所说,将原始文件读入内存缓冲区(例如向量)并在该缓冲区中进行修改,然后将缓冲区写入文件。

于 2013-07-30T10:37:07.073 回答