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

时间:2015-05-23 18:40:04

标签: qt file qtextstream

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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