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

QTextStream atEnd() is returning true when starting to read from a file

我想在 linux 机器上读取和解析 /proc/PID/status 文件的内容,但是 QTextStream.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());