gpt4 book ai didi

c++ - 无法从文件中删除行,使用 stringstream 作为替代?

转载 作者:太空宇宙 更新时间:2023-11-04 11:59:45 24 4
gpt4 key购买 nike

我看过 ostream、istream、iostream 和 fstream,但我仍然不太明白如何简单地从输入或输出文本文件中删除行,就像 clown 可以使用文本编辑器做的那样。

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

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

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

我真正希望能够做的就是操纵现有的东西,而不是每次我操纵我的文本时都要跳过所有这些箍,因为我有大量的东西需要整理和编辑。

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

这是否有效,或者有更简单的方法吗?我很想使用 vector 作为我的第一个猜测。

[编辑] 请记住,我正在处理的文件组织得不太好,不值得使用结构来轻松操作数据 block 。它可以是长篇大论的散文,也可以是无意义的数字串。

最佳答案

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

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

关于c++ - 无法从文件中删除行,使用 stringstream 作为替代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14614136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com