Namespaces
Variants

std::ios_base:: iostate

From cppreference.net
typedef /*implementation defined*/ iostate ;
static constexpr iostate goodbit = 0 ;
static constexpr iostate badbit = /* implementation defined */

static constexpr iostate failbit = /* implementation defined */

static constexpr iostate eofbit = /* implementation defined */
**Примечание:** Весь код C++ внутри тегов ` ` оставлен без изменений, как и требовалось. HTML-теги и атрибуты также сохранены в оригинальном виде.

Определяет флаги состояния потока. Это BitmaskType , определены следующие константы:

Константа Объяснение
goodbit отсутствие ошибки
badbit неустранимая ошибка потока
failbit ошибка ввода/вывода (ошибка форматирования или извлечения)
eofbit достигнут конец файла во входной последовательности

Содержание

Флаг eofbit

Флаг eofbit устанавливается следующими функциями стандартной библиотеки:

  • Функция ввода строки std::getline , если она завершается достижением конца потока, а не указанного завершающего символа.
  • Перегрузки числового ввода basic_istream::operator>> , если конец потока был достигнут при чтении следующего символа на Этапе 2 обработки num_get::get . В зависимости от состояния разбора, failbit может быть установлен или нет одновременно: например, int n ; istringstream buf ( "1" ) ; buf >> n ; устанавливает eofbit , но не failbit : целое число 1 было успешно разобрано и сохранено в n . С другой стороны, bool b ; istringstream buf ( "tr" ) ; buf >> boolalpha >> b ; устанавливает и eofbit , и failbit : не хватило символов для завершения разбора булева значения true .
  • Перегрузки извлечения символов operator>> std::basic_istream , если конец потока достигается до предела (если есть) на количество извлекаемых символов.
  • Манипулятор ввода-вывода std::get_time и любые функции разбора std::time_get : time_get::get , time_get::get_time , time_get::get_date , и т.д., если конец потока достигается до обработки последнего символа, необходимого для разбора ожидаемого значения даты/времени.
  • Манипулятор ввода-вывода std::get_money и функция money_get::get , если конец потока достигается до обработки последнего символа, необходимого для разбора ожидаемого денежного значения.
  • Конструктор basic_istream::sentry , выполняемый в начале каждой форматированной функции ввода: если бит skipws не сброшен (например, с помощью std::noskipws ), sentry читает и отбрасывает ведущие пробельные символы. Если конец входного потока достигается во время этой операции, устанавливаются и eofbit , и failbit , и ввод не происходит.
  • Манипулятор ввода-вывода std::ws , если он достигает конца потока при потреблении пробельных символов (но, в отличие от форматированного ввода sentry, в этом случае он не устанавливает failbit ).
  • Неформатированные функции ввода basic_istream::read , basic_istream::get , basic_istream::peek , basic_istream::readsome , basic_istream::ignore , и basic_istream::getline , при достижении конца потока.
  • Функция отбрасывания ввода basic_istream::ignore , когда конец потока достигается до достижения указанного символа-разделителя.
  • Функция немедленного ввода basic_istream::readsome , если basic_streambuf::in_avail возвращает - 1 .

Следующие функции сбрасывают eofbit в качестве побочного эффекта:

Обратите внимание, что почти во всех ситуациях, если установлен eofbit, то failbit также установлен.

Флаг failbit

Флаг failbit устанавливается следующими функциями стандартной библиотеки:

  • Конструктор basic_istream::sentry , выполняемый в начале каждой функции ввода, если либо eofbit , либо badbit уже установлен в потоке, или если достигнут конец потока при потреблении начальных пробельных символов.
  • Конструктор basic_ostream::sentry , выполняемый в начале каждой функции вывода, при определенных реализацией условиях.
  • operator>> (std::basic_string<>) если функция не извлекает символы из входного потока.
  • operator>> (std::complex<>) если функции не удается извлечь корректное комплексное число.
  • Перегрузки для массивов символов и одиночных символов operator>> если они не извлекают ни одного символа.
  • Перегрузка для streambuf basic_istream::operator>> если аргумент streambuf является нулевым указателем или если в streambuf не было вставлено символов.
  • Перегрузка для streambuf basic_ostream::operator<< если функция не вставляет символы.
  • operator>> (std::bitset<>) если функция не извлекает символы из входного потока.
  • std::getline если функция не извлекает символы или если ей удается извлечь basic_string::max_size символов из входного потока.
  • Числовые, указательные и булевы перегрузки ввода basic_istream::operator>> (технически, перегрузки num_get::get которые они вызывают), если ввод не может быть разобран как корректное значение или если разобранное значение не помещается в целевой тип.
  • Манипулятор ввода времени std::get_time (технически, time_get::get который он вызывает), если ввод не может быть однозначно разобран как значение времени согласно заданной строке формата.
  • Манипулятор ввода валюты std::get_money (технически, money_get::get который он вызывает), если ввод не может быть однозначно разобран как денежное значение согласно правилам локали.
  • Операторы извлечения всех RandomNumberEngine s , если встречается некорректный ввод.
  • Операторы извлечения всех RandomNumberDistribution s , если встречается некорректный ввод.
  • Неформатированные функции ввода basic_istream::get если они не извлекают символы.
  • basic_istream::getline , если не извлекает символы, если заполняет предоставленный буфер без встречи разделителя, или если размер предоставленного буфера меньше 1.
  • basic_istream::read , если условие конца файла возникает во входном потоке до того, как все запрошенные символы могут быть извлечены.
  • basic_istream::seekg при неудаче
  • basic_ostream::tellp при неудаче
  • Конструкторы std::basic_fstream , std::basic_ifstream , и std::basic_ofstream принимающие аргумент имени файла, если файл не может быть открыт.
  • basic_fstream::open , basic_ifstream::open , и basic_ofstream::open если файл не может быть открыт.
  • basic_fstream::close , basic_ifstream::close , и basic_ofstream::close если файл не может быть закрыт.

Флаг badbit

Битовый флаг badbit устанавливается следующими функциями стандартной библиотеки:

  • basic_ostream::put если не удается вставить символ в выходной поток по любой причине.
  • basic_ostream::write если не удается вставить символ в выходной поток по любой причине.
  • Форматированные функции вывода operator<< , std::put_money , и std::put_time , если они достигают конца выходного потока до завершения вывода.
  • basic_ios::init при вызове для инициализации потока с нулевым указателем для rdbuf() .
  • basic_istream::putback и basic_istream::unget при вызове для потока с нулевым rdbuf() .
  • basic_ostream::operator<< (basic_streambuf*) когда передается нулевой указатель в качестве аргумента.
  • basic_istream::putback и basic_istream::unget если rdbuf ( ) - > sputbackc ( ) или rdbuf ( ) - > sungetc ( ) возвращают traits :: eof ( ) .
  • basic_istream::sync , basic_ostream::flush , и каждая функция вывода на потоке вывода с unitbuf , если rdbuf ( ) - > pubsync ( ) возвращает - 1 .
  • Каждая функция потокового ввода-вывода, если исключение выбрасывается любым методом связанного буфера потока (например, sbumpc() , xsputn() , sgetc() , overflow() , и т.д.).
  • ios_base::iword и ios_base::pword при неудаче (например, при неудачном выделении памяти).

Пример

Смотрите также

В следующей таблице показаны значения basic_ios аксессоров ( good() , fail() и др.) для всех возможных комбинаций ios_base::iostate флагов:

**Примечание:** Весь текст внутри тегов ` `, ` ` и атрибутов `title` сохранен без изменений, так как содержит C++ специфичные термины и код, которые не подлежат переводу согласно требованиям. HTML структура и форматирование полностью сохранены.
ios_base::iostate флаги basic_ios аксессоры
eofbit failbit badbit good() fail() bad() eof() operator bool operator!
ложь ложь ложь истина ложь ложь ложь истина ложь
ложь ложь истина ложь истина истина ложь ложь истина
ложь истина ложь ложь истина ложь ложь ложь истина
ложь истина истина ложь истина истина ложь ложь истина
истина ложь ложь ложь ложь ложь истина истина ложь
истина ложь истина ложь истина истина истина ложь истина
истина истина ложь ложь истина ложь истина ложь истина
истина истина истина ложь истина истина истина ложь истина
возвращает флаги состояния
(публичная функция-член std::basic_ios<CharT,Traits> )
устанавливает флаги состояния
(публичная функция-член std::basic_ios<CharT,Traits> )
изменяет флаги состояния
(публичная функция-член std::basic_ios<CharT,Traits> )