如何不覆盖,而是把内容放在文件的中间

How to NOT OVERWRITE but put content in the middle of a file?

本文关键字:文件 中间 覆盖 何不      更新时间:2023-10-16

我试图写一个c++代码,将把一些额外的文本在中间不覆盖。我已经尝试了所有可能的标签组合,但没有一个是工作的。谁能给我举个例子?
例如:-如果输入是:-

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

那么输出应该是:-

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

Where are you文本插入到中间。我使用c++文件处理

我认为文件的工作方式很像数组,因为你不能简单地插入。例如,如果你正在实现一个向量或数组列表,并想在中间插入一个值,你必须在那之后清空所有的值。要插入到中间,我想你需要移动下面所有的内容。我可能会先将所有内容读入内存或使用临时文件。

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

你有两个选择:

  1. 读取文件到内存
    在内存中操作文件
    覆盖旧文件

  2. 打开文件进行读取,打开临时文件进行写入。
    从输入文件复制到输出文件,直到您想要添加文本的地方。
    写修改并完成副本。