Читайте текстовый файл построчно в Qt - PullRequest
36 голосов
/ 26 марта 2011

Как я могу читать текстовые файлы построчно в Qt?

Я ищу Qt, эквивалентный:

std::ifstream infile;
std::string line;
while (std::getline(infile, line))
{
   ...
}

Ответы [ 4 ]

85 голосов
/ 27 марта 2011

Используйте этот код:

QFile inputFile(fileName);
if (inputFile.open(QIODevice::ReadOnly))
{
   QTextStream in(&inputFile);
   while (!in.atEnd())
   {
      QString line = in.readLine();
      ...
   }
   inputFile.close();
}
1 голос
/ 04 августа 2017
QFile inputFile(QString("/path/to/file"));
inputFile.open(QIODevice::ReadOnly);
if (!inputFile.isOpen())
    return;

QTextStream stream(&inputFile);
QString line = stream.readLine();
while (!line.isNull()) {
    /* process information */

    line = stream.readLine();
};
0 голосов
/ 31 декабря 2017

Начиная с Qt 5.5 вы можете использовать QTextStream::readLineInto. Он ведет себя подобно std::getline и, возможно, быстрее, чем QTextStream::readLine, потому что он повторно использует строку:

QIODevice* device;
QTextStream in(&device);

QString line;
while (in.readLineInto(&line)) {
  // ...
}
0 голосов
/ 09 мая 2017

Вот пример из моего кода.Поэтому я буду читать текст из 1-й строки в 3-ю строку с помощью readLine (), а затем сохранять переменную в массиве и печатать в текстовое поле с помощью цикла for:

QFile file("file.txt");

    if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
        return;

    QTextStream in(&file);
    QString line[3] = in.readLine();
    for(int i=0; i<3; i++)
    {
        ui->textEdit->append(line[i]);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...