исключение файла и перемещение курсора Переполнение стека

Я использую обработку исключений при чтении из файла, чтобы определить, имеет ли часть, которую я хочу сохранить в переменной, правильный тип (например, я не хочу хранить строку в двойной переменной), но когда возникает исключение, курсор не перейдет на следующую строку. Есть ли какой-нибудь возможный способ сделать это?

0

Решение

Если у вас есть включенное исключение для неправильного / неудачного ввода первый неправильный символ во входном потоке вызовет исключение.

Если ваша обработка ошибок состоит в пропуске оставшейся части строки, чтобы возобновить обработку следующей строки, вы должны Чисто состояние ошибки, а затем игнорировать непрочитанные символы строки. Добавьте следующее в ваш код обработки исключений:

InputFile.clear(); // without this, every subsequent file op would fail
InputFile.ignore(std::numeric_limits<std::streamsize>::max(),'\n');

Вы должны однако заботиться, потому что >> чтение из потоков может также пропустить новые строки, так что отсутствующие данные могут поставить вас уже на следующую строку. Более безопасный подход — читать поток за строкой std::getline() и проанализировать каждую строку с stringstream.

0

Другие решения

Других решений пока нет …