it-swarm.com.de

Liest eine Textdatei in Qt Zeile für Zeile

Wie kann ich eine Textdatei in Qt Zeile für Zeile lesen?

Ich suche das Qt-Äquivalent zu:

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

Verwenden Sie diesen Code:

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

Sie könnten QFile :: readAll () verwenden, siehe http://doc.qt.io/qt-5/qiodevice.html#readAll

Verwenden Sie dann den QString-Konstruktor, der ein QByteArray verwendet, siehe http://doc.qt.io/qt-5/qstring.html#QString-9

1
Zitrax
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();
};
1
LNJ

Seit Qt 5.5 können Sie QTextStream::readLineInto verwenden. Es verhält sich ähnlich wie std::getline und ist möglicherweise schneller als QTextStream::readLine, da es den String wiederverwendet:

QIODevice* device;
QTextStream in(&device);

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