我看过ostream,istream,iostream和fstream,但我仍然无法弄清楚如何简单地从输入或输出文本文件中删除行,就像任何小丑都可以使用文本编辑器一样。
例如,如果我有一个文件
读取box 1n
socksn
box 2n
pajamasn
box 3n
textbooksneof
等,我想完全删除第二个框(第 3 行和第 4 行),以便文本文件读取
box 1n
socksn
box 3n
textbooksneof
我显然需要创建一个临时文件,并且只将我想保留的内容放在该临时文件中,删除原始文件,然后使用原始文件的名称重命名临时文件。 这很好,而且很花花公子,我知道这实际上是所有程序处理文档编辑的方式。 但是编码是一个乏味的痛苦。
我真正希望能够做的是操纵存在的东西,而不是每次纵我的文本时都跳过所有这些箍,因为我有大量的东西需要整理和编辑。
所以这是我的假设,我想得到一些建议。 打开文件时,将文件的全部内容存储到字符串、向量、动态分配的 char 数组或字符串流中,以便我可以轻松地删除其中的一部分并重新排列它,这是否更容易? 然后,我可以将编辑后的文本转储到临时文本中,删除原始文本,并使用原始文件的名称重命名临时文件。
这是否有任何有效性,或者有更简单的方法可以做到这一点? 我很想使用向量作为我的第一个猜测。
[编辑] 请记住,我正在处理的文件组织得不是那么好,值得使用结构来轻松操作数据块。 它可能是大段的散文,也可能是毫无意义的数字串。
如果你有很多行和很多更改,我很想使用std::list
而不是std::vector
。
如果经常删除或插入,则必须重新排列行。用std::vector
这样做比用std::list
更昂贵。