1

我查看了 ostream、istream、iostream 和 fstream,但我仍然无法完全弄清楚如何像任何小丑使用文本编辑器所做的那样简单地从输入或输出文本文件中删除行。

例如,如果我有一个文件读取,

box 1\n
socks\n
box 2\n
pajamas\n
box 3\n
textbooks\n\eof

等等,我想完全删除第二个框(第 3 和第 4 行),以便文本文件读取

box 1\n
socks\n
box 3\n
textbooks\n\eof

我显然需要创建一个临时文件,并仅将我想要保留的内容放在该临时文件中,删除原始文件,然后用原始文件的名称重命名临时文件。这很好,很花哨,我知道这实际上是所有程序处理文档编辑的方式。但编写代码是一件令人头疼的事情。

我真正想做的就是操纵存在的东西,而不必在每次操纵文本时跳过所有这些圈子,因为我有大量的东西要整理和编辑。

所以这是我的假设,我想要一些建议。在打开文件时将文件的全部内容存储到字符串、向量、动态分配的 char 数组或字符串流中是否更容易,以便我可以轻松地删除其中的一部分并重新排列它?然后我可以将我编辑的文本转储到临时文本中,删除原始文本,并用原始文件的名称重命名临时文件。

这有任何有效性,还是有更简单的方法来做到这一点?我很想使用向量作为我的第一个猜测。

[编辑] 请记住,我正在处理的文件组织得不是很好,不适合使用结构来轻松操作数据块。它可能是一大段散文,也可能是一串毫无意义的数字。

4

1 回答 1

1

如果您有很多行和很多更改,我很想使用 astd::list而不是 a std::vector

如果您经常删除或插入,则必须重新排列行。使用 astd::vector比使用 a 更昂贵std::list

于 2013-01-30T21:35:17.743 回答