4

我想在 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)

4

2 回答 2

2

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

于 2015-05-23T18:47:15.780 回答
1

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

QTextStream stream(stdin);
QString line;
do {
    line = stream.readLine();
} while (!line.isNull());
于 2015-05-24T07:33:56.197 回答