我正在打开一个文件,并获得它的QTEXTSTREAM。然后,我使用readline()逐行读取流线。当行与某个字符串匹配时,我需要用另一个字符串替换它。我需要行为是完全替换了行(即,如果行是“长字”,并且我用“ word”代替,该行应包含“ word”和“ word”)。

目前,我正在使用Seek(),然后<<操作员将我的字符串放在给定的位置,但是最后一个字符串的残留物仍然保留,因此我留下了“ Wordword”之类的东西。如何防止这种情况发生并确保整个生产线被我的新产品完全替换?

有帮助吗?

解决方案

据我所知,您不能简单地将其就地的一块文本文件删除。如果替换字符串的尺寸相同,则可以替换这些精确的字节,如果它较短,则可以通过用空空间填充空空间来侵入问题。

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

如果可以将/从文件中添加/删除块,则很可能会在HDD上留下相当零散的文件。如果您需要插入更多字符,则必须创建额外的片段,因为新数据根本无法适应旧数据所占据的空间,并且删除数据将留下文件中的孔。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top