2015-07-13 123 views
3

我試圖在文本文件中搜索字符串;我的目標是隻有在它尚未寫入我的文本文件中時才寫它。如何在文本文件中使用Qt搜索字符串

這裏是我的功能(我不知道如何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變量;我可以用它來尋找我的字符串嗎?

回答

5

你可以做到以下幾點:

[..] 
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

這不僅會如果searchString不包含新的行字符,則可以準確地工作。 – LovesTha

+0

使用的命令似乎是有效的,但程序流程邏輯不會:你爲每一行不包含字符串的東西做了某事。您應該在代碼的_do something_點處切換布爾值,並打破循環。然後,檢查循環外部的這個布爾條件_do something_。 – philipp

2

在沒有大文件的情況下

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建議