2015-07-13 7 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 метод «содержит» работает только с константой 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 что-то в своем коде и разбить цикл. И затем, проверьте этот bool вне цикла, чтобы условно _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 предложил

 Смежные вопросы

  • Нет связанных вопросов^_^