Определение состояния потока

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

Функция Назначение
eof() fail() bad() good() rdstate() clear() Возвращает ненулевое значение при обнаружении конца файла Возвращает ненулевое значение при обнаружении какой-либо ошибки в потоке, возможно не фатальной: если функция bad() при этом возвращает 0, то, скорее всего, можно продолжать работу с потоком, предварительно сбросив флаг ios::failbit Возвращает ненулевое значение при обнаружении серьезной ошибки ввода-вывода; в этом случае продолжать работу с потоком не рекомендуется Возвращает ненулевое значение, если биты состояния не установлены Возвращает текущее состояние потока в виде одной из констант: ios::goodbit(нет ошибки), ios::eofbit(достигнут конец файла), ios::failbit(возможно, не критическая ошибка форматирования или преобразования), ios::badbit(критическая ошибка) Задает состояние потока; принимает аргумент типа int, который по умолчанию равен 0, что соответствует сбросу всех битов состояния, в противном случае содержит одну или несколько перечисленных в предыдущем пункте констант, объединенных с помощью операции побитового ИЛИ (|)

Пример:

#include<fstream.h>

void main()

{ int fp;

ifstream fl("file1.doc",ios::in);

if(fl.eof()) fl.clear(); // состояние потока сбрасывается

if(fl.fail())

cerr<<"ошибка при создании файла\n";

if(fl.good()) cin>>fp;

if(!fl) //другой способ обнаружения ошибки

cerr<<"ошибка при создании файла\n";

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: