我想在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)
答案 0 :(得分:1)
没关系发现我需要在while子句之前读一行,现在它可以正常工作。
答案 1 :(得分:1)
在这些流上循环的首选方法是使用do / while循环。这是为了允许流在任何查询(如atEnd)之前正确检测Unicode。
QTextStream stream(stdin);
QString line;
do {
line = stream.readLine();
} while (!line.isNull());