在文本文件内的预先存在的字符串前面添加单词

时间:2015-01-08 23:31:52

标签: c++ file

如何在文本文件中的预先存在的字符串中添加单词。我在一个需要我"标记"的实例中使用它。这个文件中的某一行文字,我想做类似的事情:

DELETED: data, string, text that is no longer relevant.

这个问题不是我如何追加现有文件,而是文件内的特定行。

2 个答案:

答案 0 :(得分:1)

文件只是C ++中的字节流。你不能只在中间添加一些东西,你必须在插入位置之后移动所有内容,有效地重写整个文件。

答案 1 :(得分:1)

第一个也是最常用的选项是复制文件。在副本中,将DELETED标记添加到任何位置。完成后,您可以将副本重命名为旧名称,替换它。这有点浪费,因为您可能刚刚从副本中删除了该行。

第二个选项是用注释标记覆盖该行。我在非常大的文本文件中看到过这种情况。您想要使用读/写fstream打开文件,而不是ifstream而不是ofstream。在读取每一行之前保存流的位置。使用tellg。然后读一行。如果是您要查找的行,请使用seekp设置输出位置并写入“#”,或者直到行尾的注释标记。请勿覆盖上一个换行符或结束换行符。

然后你的文件看起来像

data, string, text
##################
data, string, text

我认为单个字符注释标记更好,除非你能保证每一行都有足够的空间用DELETED覆盖:在前面。

您可以使用空格代替评论。什么适用于读取此文件的程序。