Comment lire un fichier texte ligne par ligne dans Qt?
Je recherche l'équivalent Qt de:
std::ifstream infile;
std::string line;
while (std::getline(infile, line))
{
...
}
Utilisez ce code:
QFile inputFile(fileName);
if (inputFile.open(QIODevice::ReadOnly))
{
QTextStream in(&inputFile);
while (!in.atEnd())
{
QString line = in.readLine();
...
}
inputFile.close();
}
Vous pouvez utiliser QFile :: readAll (), voir http://doc.qt.io/qt-5/qiodevice.html#readAll
Et utilisez ensuite le constructeur QString qui prend un QByteArray, voir http://doc.qt.io/qt-5/qstring.html#QString-9
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();
};
Depuis Qt 5.5, vous pouvez utiliser QTextStream::readLineInto
. Il se comporte de la même manière que 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)) {
// ...
}