Часто при обработке некоторых файлов данных, ориентированных на строки, я пишу такой код:
while (std::getline(infile, line))
{
if (line.compare(""))
{
//Process non-empty line
}
else
{
//Finalize processing a group of non-empty lines
}
}
if (infile.eof())
{
//Finalize processing a group of non-empty lines
}
Приведенный выше пример иллюстрирует, что обработка группы непустых строк завершенапри встрече с пустой строкой или концом файла / потока.
Буду признателен за советы, как оптимизировать эту последовательность кода и избежать появления идентичного Finalization Code
в коде ДВАЖДЫ ... или избегать проверки на eof дважды каждая итерация цикла.
PS
Я не хочу, чтобы Finalization Code
запускался при возникновении аппаратной ошибки чтения - другими словами, ошибки eof и read не должны бытьсмешанный.