49 votes

Lire un fichier texte ligne par ligne dans Qt

Comment lire un fichier texte ligne par ligne dans Qt ?

Je cherche l'équivalent Qt de :

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

102voto

Sergio Points 679

Utilisez ce code :

 QFile inputFile(fileName);
if (inputFile.open(QIODevice::ReadOnly))
{
   QTextStream in(&inputFile);
   while (!in.atEnd())
   {
      QString line = in.readLine();
      ...
   }
   inputFile.close();
}

6voto

LNJ Points 24

Ce code est peut-être un peu plus simple :

 QFile inputFile(QString("/path/to/file"));
inputFile.open(QIODevice::ReadOnly);
if (!inputFile.isOpen())
    return;

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

3voto

R1tschY Points 343

Depuis Qt 5.5, vous pouvez utiliser QTextStream::readLineInto . Il se comporte comme std::getline et est peut-être plus rapide que QTextStream::readLine , car il réutilise la chaîne :

 QIODevice* device;
QTextStream in(&device);

QString line;
while (in.readLineInto(&line)) {
  // ...
}

0voto

adhityarizi Points 21

Voici l'exemple de mon code. Je vais donc lire un texte de la 1ère ligne à la 3ème ligne à l'aide de readLine(), puis le stocker dans une variable de tableau et l'imprimer dans le champ de texte à l'aide de la boucle 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]);
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X