std::ios_base:: iostate
|
typedef
/*implementation defined*/
iostate
;
|
||
|
static
constexpr
iostate goodbit
=
0
;
|
||
|
static
constexpr
iostate badbit
=
/* implementation defined */
static
constexpr
iostate failbit
=
/* implementation defined */
|
||
Определяет флаги состояния потока. Это 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 флагов:
| 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>
)
|