Непонятный нюанс while(!atEnd()), не доходит до конца файла |
Здравствуйте, гость ( Вход | Регистрация )
Непонятный нюанс while(!atEnd()), не доходит до конца файла |
NordWest |
29.9.2010, 11:37
Сообщение
#1
|
Студент Группа: Участник Сообщений: 86 Регистрация: 26.11.2008 Пользователь №: 433 Спасибо сказали: 1 раз(а) Репутация: 0 |
Сейчас в конкретном примере показать не смогу, но пару раз встречался. Вобщем то в том и дело, что снова пишу подобный код и не могу вспомнить правильный вариант.
Ситуация такая. Построчное считывание из текстового файла. Код примерно такой: CODE QFile pnFile(plnFileName); pnFile.open(QIODevice::ReadOnly | QIODevice::Text); QTextStream pnStream(&pnFile); while(!pnStream.atEnd()) { ... } В цикле происходит считывание из pnStream текстовых строк. Проблема в том, что иногда цикл завершается на половине файла. И зависит это от того, что стоит в while. В примере один случай, а можно написать while(!pnFile.atEnd()). И в одном из вариантов будет всё в порядке, а в другом нет и файл не будет считан до конца. Может быть я каких-то нюансов не учёл, а они важны. Я это случайно заметил, когда обнаружил уж очень большую недостачу данных. Может тут какое-то явное правило существует?.. Сообщение отредактировал NordWest - 29.9.2010, 11:45 |
|
|
NordWest |
29.9.2010, 13:09
Сообщение
#2
|
Студент Группа: Участник Сообщений: 86 Регистрация: 26.11.2008 Пользователь №: 433 Спасибо сказали: 1 раз(а) Репутация: 0 |
Нет, не оттуда. Обычные текстовые файлы, в той же папке, что и программа. Это не устройства и не процессы. Я с такими ещё не связывался. А у обычных файлов странно получить ситуацию, когда его длинна изменилась за время считывания. Если я правильно интерпретирую.
Т.е. предпочтительнее использовать QTextStream::atEnd () ? |
|
|
Текстовая версия | Сейчас: 21.12.2024, 14:10 |