Состояние потока
Состояние потока характеризуется элементом данных state, для которого определены флаги состояния и функции управления состоянием.
enum ios::io_state
{
goodbit = 0x00, // Ошибок нет
eofbit = 0x01, // Обнаружен признак конца файла
failbit = 0x02, // Ошибка форматирования или
// преобразования данных
badbit = 0x04, // Серьезная ошибка (буферизация,
// чтение после конца файла и т.д.)
hardfail = 0x08 // Аппаратная ошибка
};
Функции управления состоянием в класса ios :
int rdstate(); // Чтение текущего состояния
int eof(); // Проверка флага eof
int fail(); // Проверка badbit | failbit | hardfail
int bad(); // Проверка badbit | hardfail
int good(); // Проверка на отсутствие ошибок
int clear(int=0); // Установка флагов ошибки, по
// умолчанию - очистка всех
operator void*(); // Преобразование к типу void*,
// возвращает NULL, если fail()==1
int operator!(); // Возвращает 1, если fail()==1
Последние переопределения позволяют проверять наличие ошибок в потоках в виде :
if (cout) ... или if (!cout) ...