Консультации со стандартом,
Возвращает: traits::eof()
, если good()
равно false
.В противном случае возвращает rdbuf()->sgetc()
.
Что касается sgetc()
,
Возвращает: Если позиция чтения входной последовательности недоступна, возвращается underflow()
.
И underflow
,
Если ожидающая последовательность равна нулю, то функция возвращает traits::eof()
для индикации сбоя.
Так что да,возвращает EOF
в конце файла.
Проще сказать, что он возвращает int_type
.Поскольку значения int_type
соответствуют значениям char_type
плюс EOF, он, вероятно, вернет char_type
, если EOF будет невозможен.
Как уже упоминалось, peek
не продвигает файлпозиция.Как правило, проще и лучше всего просто зацикливаться на while ( input_stream )
и допускать, что неудача при получении дополнительного ввода убивает процесс разбора.