在c++中写入文本文件的开头

Write to the start of a textfile in c++

本文关键字:文件 开头 文本 c++      更新时间:2023-10-16

我正在寻找一种简单的方法,将一些内容写入现有文本文件的第一行。我试着使用这样的流:

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

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

将整个文本文件复制到一个已经有行的向量中,然后将其写回是我的最后一个选择,但我真的很想避免,因为文本文件相当大。

不能简单地"追加"到文件的开头。

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

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