在文本文件中预先存在的字符串前添加一个词
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: 覆盖。
您可以使用空格代替注释。任何将与读取此文件的程序一起工作的东西。
您将如何向文本文件中预先存在的字符串添加单词。我在一个需要我 "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: 覆盖。
您可以使用空格代替注释。任何将与读取此文件的程序一起工作的东西。