C++ Программирование в среде С++ Builder 5

Состояние потока


Состояние объекта класса ios (и производных от него) содержится в его закрытом элементе _state в виде набора битов. Следующая таблица перечисляет имеющиеся биты состояния потока.

Таблица 9.4. Биты состояния потока

Бит

Описание

goodbit С потоком все в порядке (на самом деле это не какой-то бит, а 0 — отсутствие битов ошибки).
eofbit Показывает, что достигнут конец файла.

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

Для опроса или изменения состояния потока в классе ios имеется ряд функций и операций.

  • int rdstate() ; Возвращает текущее состояние.
  • bool eof() ; Возвращает true, если установлен eofbit.
  • bool good () ; Возвращает true, если не установлен ни один из битов ошибки.
    • bool fail () ; Возвращает true, если установлен failbit или bad-bit.

  • bool bad() ; Возвращает true, если установлен badbit.
  • void clear (int =0); Сбрасывает биты ошибки (по умолчанию) или устанавливает состояние потока в соответствии с аргументом.
  • void setstate(int) ; Устанавливает состояние битов ошибки с соответствии с аргументом.
  • operator void*() ; Возвращает нулевой указатель, если установлен какой-либо из битов ошибки.
  • bool operator! () ; Возвращает true, если установлен какой-либо из битов ошибки.
  • Функция operator void*() неявно вызывается, если поток сравнивается с нулем (как cin в примере из листинга),



    Содержание раздела