Подтвердить что ты не робот

С++ ifstream failbit и badbit

В случае ifstream в С++, при каких условиях установлены флаги failbit и badbit?

4b9b3361

Ответ 1

Согласно cplusplus.com:

failbit обычно устанавливается операцией ввода, когда ошибка связана с внутренней логикой самой операции, поэтому возможны другие операции с потоком. Хотя badbit обычно устанавливается, когда ошибка связана с потерей целостности потока, которая, вероятно, сохранится, даже если в потоке выполняется другая операция. badbit может быть проверен независимо, вызвав функцию члена bad.

Простыми словами, если вы получите число, когда ожидаете получить письмо, оно failbit. Если произошла ошибка серьезная, которая нарушает способность читать из потока вообще - это a badbit.

За исключением упомянутых флагов существует третья довольно похожая - eofbit. Вы можете проверить состояние, используя несколько функций: ios::fail, ios::good и ios::bad

И вы можете познакомиться с библиотекой iostream на ресурсе MSDN.

Наконец, если вы ищете решение правильное, как обрабатывать все биты ошибок и исключения во время чтения из файла (или доступа к некоторому файлу или каталогу), я настоятельно рекомендую вам прочитать очень полную и хорошо написанную статью "Чтение файлов на С++ с использованием ifstream: правильное обращение с badbit, failbit, eofbit и perror(), в в конце которого вы найдете несколько Идеальных решений. Статья заслуживает почитания.