在文本文件中预先存在的字符串前添加一个词

Adding a word in front of a pre-existing string inside of a text file

您将如何向文本文件中预先存在的字符串添加单词。我在一个需要我 "mark" 此文件中的特定文本行的实例中使用它,我想做类似的事情:

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

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

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

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

第二个选项是用注释标记覆盖该行。我已经看到这是在非常大的文本文件中完成的。您想要使用 read/write fstream 打开文件,而不是 ifstream 也不是 ofstream。在阅读每一行之前保存流位置。使用 tellg。然后读一行。如果它是您要查找的行,请将输出位置设置为 seekp 并写入“#”或任何注释标记,直到该行结束。不要覆盖上一个换行符或结束换行符。

然后你的文件看起来像

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

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

您可以使用空格代替注释。任何将与读取此文件的程序一起工作的东西。