2014-05-23 57 views
0

我想写一个C++代码,它会把一些额外的文本放在不覆盖的中间。我尝试过所有可能的标签组合,但他们都没有工作。任何人都可以给我一个工作的例子吗?
例如: - 如果输入是: -如何不覆盖,但把内容放在文件的中间?

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

那么输出应该是: -

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

你在哪里文字插入在middle.I'm使用c + +文件处理。

+4

你试过什么不起作用?没有“开箱即用”追加不在文件末尾的写入。你必须“移动”其余的字节。 –

+0

我试图通过调用一些写函数来做到这一点,但我想没有其他方法可以自己移动字节,就像你说的那样。我会试试你的方式。 –

+1

寻找你想要插入文本的位置,保存文本的其余部分,直到EOF,写下你所需要的,然后附加其余部分。 – 0x499602D2

回答

0

我认为,文件工作很像数组,因为你不能做一个简单的插入。例如,如果你正在实现一个vector或arraylist,并且想要在中间插入一个值,那么你必须在后面插入所有的值。要插入中间,我认为您需要移动下面的所有内容。我可能会先将所有内容读入内存或使用临时文件。

0

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

你有两个选择:

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

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