QTextStream atEnd() возвращает true, когда начинает читать из файла
Я хочу прочитать и проанализировать содержимое файла /proc/PID/status на компьютере с Linux, но 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 ответа
Решение
Предпочтительным способом часто повторять эти потоки является цикл do/while. Это сделано для того, чтобы позволить потоку правильно определять Unicode до того, как будут выполнены какие-либо запросы (например, atEnd).
QTextStream stream(stdin);
QString line;
do {
line = stream.readLine();
} while (!line.isNull());
Nevermind обнаружил, что мне нужно прочитать одну строку перед предложением while, теперь это работает.