Предполагается, iFile
является istream
:
Вы должны выйти из цикла при любой ошибке , не только при EOF (что можно проверить с помощью iFile.eof()
, BTW), потому что это бесконечный цикл, когда любой сбой формата устанавливает поток в плохое состояние, кроме EOF. Обычно необходимо выйти из цикла чтения в середине цикла, после того, как все прочитано (успешно или нет), и до того, как оно введено.
Чтобы убедиться, что больше ничего интересного не произойдет, вы можете после цикла сбросить состояние потока и затем пытаться читать пробельные символы только до тех пор, пока не достигнете EOF:
while( !iFile.eof() )
{
iFile >> std::ws;
string line;
std::getline(iFile,line);
if(!line.empty()) error(...);
}