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