【问题标题】:Write to the start of a textfile in c++在 C++ 中写入文本文件的开头
【发布时间】:2013-07-30 10:34:22
【问题描述】:

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

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

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

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

【问题讨论】:

  • 没有简单的方法可以做到这一点。文件中没有 insert 操作。您必须编写一个新文件,首先编写新的第一行,然后复制原始文件。
  • 您可以使用“前置文件”搜索 stackoverflow 以找到多个建议,例如 this

标签: c++ io ofstream


【解决方案1】:

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

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

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

【讨论】:

  • 那太糟糕了。但是谢谢你,现在至少我不会再浪费时间寻找另一个解决方案了 =)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 2011-09-01
相关资源
最近更新 更多