如何不覆盖,但将内容放在文件中间?

时间:2014-05-23 09:46:39

标签: c++ file-io

我正在尝试编写一个c ++代码,它会在中间添加一些不会覆盖的文本。我已经尝试了所有可能的标签组合,但它们都没有工作。谁能给我一个有效的例子呢? 例如 :- 如果输入是: -

您好!
嘿,你呢? 有人在家吗?

然后输出应该是: -

您好!
嘿,你在吗 ? 你在哪里?
有人在家吗?

你在哪里插入文本。我正在使用c ++文件处理。

2 个答案:

答案 0 :(得分:0)

我认为文件很像数组,因为你不能轻易插入。例如,如果要实现向量或arraylist并且想要在中间插入值,则必须在此之后删除所有值。要插入中间我认为你需要移动所有内容。我可能会首先将所有内容读入内存或使用临时文件。

答案 1 :(得分:0)

这不是C ++的限制,而是底层文件系统的限制(在大多数现代文件系统上) 文件是一个连续字节的块,你不能在中间附加。

您有两种选择:

  1. 将文件读入内存 操作内存中的文件
    覆盖旧文件。

  2. 打开文件进行阅读,并打开临时文件进行书写 从输入文件复制到输出文件,直到到达要添加文本的点为止 写下修改并完成复制 用tempfile替换文件。