QTextStream atEnd()在开始读取文件时返回true



我想要在linux机器上读取和解析/proc/PID/status文件的内容,但是QTextStream. xml文件是QTextStream. xml文件。当开始读取时,atEnd总是返回true。代码:

QString procDirectory = "/proc/";
    procDirectory.append(QString::number(PID));
    procDirectory.append("/status");
    QFile inputFile(procDirectory);
    if (inputFile.open(QIODevice::ReadOnly))
    {
        QTextStream in(&inputFile);
        QString line;
        while (!in.atEnd())
        {
            line = in.readLine();

文件存在,如果我手动读取没有while表达式的行,文件将被正常读取。

我错过了什么明显的东西吗?

(Debian 8 x64 QT 5.4.1之前x64, gcc 4.9.2)

没关系,我发现我需要在while子句之前读取一行,现在它可以工作了

在这些流上循环的首选方法是使用do/while循环。这是为了允许流在进行任何查询(如atEnd)之前正确检测Unicode。

QTextStream stream(stdin);
QString line;
do {
    line = stream.readLine();
} while (!line.isNull());

相关内容

  • 没有找到相关文章