Программа Qt для чтения текста видит только одну строку в многострочном файле

Я написал программу для чтения последовательности целочисленных баллов по одному на строку в текстовом файле. Файл имеет заголовок, который необходимо пропустить. Несмотря на то, что она смотрит на эту программу, она видит только первую строку (заголовок), а затем ведет себя так, как будто она в конце.

#include <QCoreApplication>
#include <QString>
#include <QTextStream>
#include <QDebug>
#include <QFile>

bool readScores(QString path)
{
  int line_count = 0;
  QFile qFile(path);
  if(!qFile.exists())
    {
      qDebug()<<"path does not exist:" << path;
      return false;
    }
  if(!qFile.open(QIODevice::ReadOnly|QIODevice::Text)){
      qDebug("open fails");
      return false;
    }
  QTextStream ts(&qFile);
  qDebug()<<ts.readLine();// just read the head...
  while(!qFile.atEnd())
    {
      line_count++;
      int score;
      QTextStream tsLine;
      QString line = ts.readLine(512);
      tsLine.setString(&line);
      tsLine >> score;
      qDebug()<<"Just read"<<score;
    }
  qDebug()<<"found "<<line_count<<" lines";
  qFile.close();
  return true;
}

int main(int argc, char *argv[])
{
  QCoreApplication a(argc, argv);
  readScores("e:/tmp/scores.txt");
  return a.exec();
}

А вот и содержание Scores.txt:

just test data
69
48
38
2
5
1
1
4

Вот вывод программы

"just test data"
found  0  lines

Вы понимаете, почему программа не видит 8 строчек партитуры? Я использую Qt 5.3.1 на Windows с Mingw32

1 ответ

Когда вы используете QTextStream, вы больше не должны использовать QFile:

bool readScores(QString path)
{
    [...]
    QTextStream ts(&qFile);
    qDebug()<<ts.readLine();// just read the head...
    QString line;
    do
    {
        line = ts.readLine();
        bool ok;
        int score = line.toInt(&ok);
        if(ok){
            qDebug()<<"Just read"<<score;
            line_count++;
        }
    }
    while (!line.isNull());
    qDebug()<<"found "<<line_count<<" lines";
    qFile.close();
    return true;
}
Другие вопросы по тегам