![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 04.05.2009
Сообщений: 9
|
![]()
Здравствуйте. Впервые на форуме, не уверен, что правильно выбрал раздел. Тем не менее, спрошу. Объясните, пожалуйста, как работает ifstream.eof(). В MSDN написано, что она возвращает true при попытке прочитать несуществующий символ. Обычно так и есть. Но сегодня я столкнулся с тем, что она устанавливается в true после чтения последнего символа файла. Не понимаю, что происходит...
P.S. Естественно, файл открыт как двоичный. Спасибо за помощь. |
![]() |
![]() |
![]() |
#2 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
![]()
eof() возвращает true, когда достигнут конец файла.
Правда, я несколько раз сталкивался с проблемой, при которой читался еще один лишний символ. Приходилось делать дополнительную проверку сразу после чтения.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
![]() |
![]() |
![]() |
#3 |
Регистрация: 04.05.2009
Сообщений: 9
|
![]()
У меня в 90% случаев как раз читается лишний символ. Например, цикл while(!file.eof()) читает последний символ 2 раза. Но не всегда! Вот в чем проблема - я не знаю, конец это или еще не конец.
|
![]() |
![]() |
![]() |
#4 | |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
![]() Цитата:
Код:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 04.05.2009
Сообщений: 9
|
![]()
А я делаю так:
Код:
Последний раз редактировалось MaTBeu; 05.05.2009 в 16:59. |
![]() |
![]() |
![]() |
#6 |
Регистрация: 04.05.2009
Сообщений: 9
|
![]()
Я был неправ, виноват. Я не заметил лишнее чтение, потому и решил, что eof() срабатывает преждевременно. Все работает как надо.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
std | Викдон | Общие вопросы C/C++ | 3 | 17.02.2009 11:33 |
fstream.eof() в mingw | alexinspir | Общие вопросы C/C++ | 1 | 30.09.2008 08:00 |
метод Close для ADODataSet вызывает ошибку 'BOF или EOF имеет ...' (mdac 6.0) | jane | БД в Delphi | 1 | 16.07.2008 07:34 |
namespace std; | lacost | Общие вопросы C/C++ | 8 | 22.10.2007 13:17 |
использование using namespace std; | che | Общие вопросы C/C++ | 7 | 11.10.2007 17:13 |