用c ++写入文本文件的开头

时间:2013-07-30 10:34:23

标签: c++ io ofstream

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

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

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

将整个文本文件复制到一个已经有行然后再写回来的向量中,这将是我的最后一个选项,但我真的很想避免,因为文本文件非常大。

1 个答案:

答案 0 :(得分:2)

你不能简单地&#34;追加&#34;到文件的开头。

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

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