如何使用Qt在文本文件中搜索字符串

6
我正在尝试在文本文件中搜索字符串,我的目的是仅在它尚未写入我的文本文件时才将其写入。
以下是我的函数(我不知道如何将其放入while循环中):
QFile MyFile("text.txt");
MyFile.open(QIODevice::ReadWrite);
QTextStream in (&MyFile);

while(!MyFile.atEnd())
  { //do something to search string inside }

MyFile.close();

我该怎么做?从Qt的帮助文档中,方法“contains”只适用于const变量;我能否使用它来查找我的字符串?
2个回答

9
您可以执行以下操作:
[..]
QString searchString("the string I am looking for");
[..]
QTextStream in (&MyFile);
QString line;
do {
    line = in.readLine();
    if (!line.contains(searchString, Qt::CaseSensitive)) {
        // do something
    }
} while (!line.isNull());

1
只有当搜索字符串不包含换行符时,才能准确地工作。 - LovesTha
1
使用的命令似乎是有效的,但程序流程逻辑不正确:您对每行不包含该字符串的内容都会执行某些操作。您应该在代码中的“执行某些操作”点切换布尔值,并退出循环。然后,在循环外部检查此布尔值以有条件地“执行某些操作”。 - philipp

5

如果不是大文件

QFile MyFile("text.txt");
MyFile.open(QIODevice::ReadWrite);
QTextStream in (&MyFile);
const QString content = in.readAll();
if( !content.contains( "String" ) {
//do something
}
MyFile.close();

为了避免在处理大文件时重复其他答案,请按照vahancho的建议执行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接