首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTextStream管理

QTextStream管理
EN

Stack Overflow用户
提问于 2011-11-29 20:03:33
回答 1查看 776关注 0票数 0

我正在打开一个文件并获取它的QTextStream。然后,我使用readLine()逐行读取流。当行与某个字符串匹配时,我需要用另一个字符串替换它。我需要的行为是该行被完全替换(即,如果该行是“line word”,我将其替换为"word",该行应该只包含"word“和"word”)。

目前,我使用seek(),然后使用<<操作符将字符串放在给定的位置,但最后一个字符串的剩余部分仍然存在,因此只剩下类似于"wordword“的内容。我如何才能防止这种情况发生,并确保我的新行完全替换了之前的整个行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-29 20:21:11

据我所知,您不能简单地就地删除文本文件的块。如果替换字符串的大小相同,您可能能够替换这些完全相同的字节,如果它更短,您可能能够通过用空值填充空格来解决这个问题。

如果您不想这样做,则必须创建一个新文件,从旧文件中读取每一行,在内存中对该行进行必要的更改,然后将该行写到新文件中。完成此操作后,您可以用新文件替换原始文件。

如果可以在文件中添加/删除块,那么您很可能会在HDD上留下一个相当零碎的文件。如果您需要插入更多字符,则必须创建额外的片段,因为新数据根本无法容纳旧数据占用的空间量,而删除数据将在文件中留下空洞。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8310387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档