Я думаю, что LITB в значительной степени прибил его. Но только чтобы добавить мои 0,02 доллара:
1) Я всегда отдавал предпочтение:
while ( stream && (stream.peek() != EOF) ) {...}
Поскольку [плохие] события могут отличаться от EOF.
(И, как уже упоминалось в litb, peek ()! = EOF решает проблему, когда поток не устанавливает EOF, пока мы не попытаемся прочитать до конца.)
.
2) Поскольку "m_fileStream" открыт, прочитан / записан / очищен и закрыт в обоих этих методах ...
Почему бы не объявить это локально в стеке? Это гарантирует, что не осталось никаких предыдущих проблем, которые могли бы вас испортить. И если вы обращаетесь к диску, эффективность может быть не самой большой проблемой ...
Кроме того, вы можете быть ленивым:
ifstream stream ( m_fileName.c_str() );
ASSERT( stream, !=, NULL ); // Uses my own ASSERT macro && stream.operator().
while ( stream && (stream.peek() != EOF) ) {...}