QTextStream Maniuplation
QTextStream Maniuplation
本文关键字:Maniuplation QTextStream 更新时间:2023-10-16
我正在打开一个文件并获得它的QTextStream。然后使用readLine()逐行读取流。当该行匹配某个字符串时,我需要用另一个字符串替换它。我需要的行为是行被完全替换(即,如果行是"longword",我用"word"替换它,该行应该包含"word"answers"word")。
现在我使用的是seek(),然后是<<操作符将我的字符串放在给定的位置,但是最后一个字符串的残余部分仍然存在,所以我留下了类似"wordword"的东西。我怎样才能防止这种情况的发生,并确保整个以前的行被我的新行完全取代?
据我所知,不能简单地就地删除文本文件的一部分。如果替换字符串的大小相同,您可能能够替换那些精确的字节,如果它更短,您可能能够通过用null填充空白空间来解决问题。
如果您不想这样做,您将不得不创建一个新文件,从旧文件中读取每一行,在内存中对该行进行必要的更改,然后将该行写入新文件。一旦完成,您就可以用新文件替换原始文件。
如果可以在文件中添加/删除块,那么很可能在HDD上留下一个相当碎片化的文件。如果需要插入更多字符,则必须创建额外的片段,因为新数据根本无法容纳旧数据所占用的空间,并且删除数据会在文件中留下漏洞。
相关文章:
- Qt VTK交互风格的信号到小部件
- QT在错误的班级中寻找空位
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 如何在Qt C++中更改光标
- 如何在MS Visual Studio 2019中运行QT UI
- QT通过C++添加映射QML项目
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用Qt C++计算类似Git的SHA1哈希
- Qt focusObjectChanged example?
- 如何在cpp文件之间切换窗口?在Qt中
- Qt和C++:将QLineEdit添加到QTabWidget中
- 从数据库实时显示QT c++中的数据
- Qt Quick-如何仅从c++代码与qml属性交互
- 无法使用Qt Creator在Windows中构建yaml-cpp
- 如何在Qt中取消捕获字符串
- Qt SQLite没有查询或参数计数不匹配
- Qt SQlite无法创建表