typedef /*implementation defined*/ iostate;
static constexpr iostate goodbit = 0;
static constexpr iostate badbit = /*implementation defined*/
static constexpr iostate failbit = /*implementation defined*/
Specifies stream state flags. It is a
BitmaskType, the following constants are defined:
|badbit||irrecoverable stream error|
|failbit||input/output operation failed (formatting or extraction error)|
|eofbit||associated input sequence has reached end-of-file|
The eofbit is set by the following standard library functions:
- The string input function std::getline if it completes by reaching the end of the stream, as opposed to reaching the specified terminating character.
- The numeric input overloads of basic_istream::operator>> if the end of the stream was encountered while reading the next character, on Stage 2 of num_get::get processing. Depending on the parsing state,
failbitmay or may not be set at the same time: for example, int n; istringstream buf("1"); buf >> n; sets
eofbit, but not
failbit: the integer 1 was successfully parsed and stored in
n. On the other hand, bool b; istringstream buf("tr"); buf >> boolalpha >> b; sets both
failbit: there was not enough characters to complete the parsing of the boolean true.
- The character extraction overloads of operator>>std::basic_istream, if the end of the stream is reached before the limit (if any) on the number of characters to be extracted.
- The std::get_time I/O manipulator and any of the std::time_get parsing functions: time_get::get, time_get::get_time, time_get::get_date, etc., if the end of the stream is reached before the last character needed to parse the expected date/time value was processed.
- The std::get_money I/O manipulator and money_get::get function, if the end of the stream is reached before the last character needed to parse the expected monetary value was processed.
- The basic_istream::sentry constructor, executed at the beginning of every formatted input function: unless the
skipwsbit is unset (e.g. by issuing std::noskipws), sentry reads and discards the leading whitespace characters. If the end of the input stream is reached during this operation, both
failbitare set, and no input takes place.
- The I/O manipulator std::ws, if it reaches the end of the stream while consuming whitespace (but, unlike the formatted input sentry, it does not set
failbitin this case)
- The unformatted input functions basic_istream::read, basic_istream::get, basic_istream::peek, and basic_istream::getline, when reaching the end of the stream.
- The discard input function basic_istream::ignore, when reaching the end of the stream before reaching the specified delimiter character.
- The immediate input function basic_istream::readsome, if basic_streambuf::in_avail returns -1
The following functions clear
eofbit as a side-effect:
The failbit is set by the following standard library functions:
- The basic_istream::sentry constructor, executed at the beginning of every input function, if either
badbitis already set on the stream, or if the end of stream is encountered while consuming leading whitespace.
- The basic_ostream::sentry constructor, executed at the beginning of every output function, under implementation-defined conditions.
- operator>>(std::basic_string<>) if the function extracts no characters from the input stream.
- operator>>(std::complex<>) if the function fails to extract a valid complex number.
- The character array and single character overloads of operator>> if they fail to extract any characters.
- The streambuf overload of basic_istream::operator>> if the streambuf argument is a null pointer or if no characters were inserted into the streambuf.
- The streambuf overload of basic_ostream::operator<< if the function inserts no characters.
- operator>>(std::bitset<>) if the function extracts no characters from the input stream.
- std::getline if the function extracts no characters or if it manages to extract basic_string::max_size characters from the input stream.
- The numeric, pointer, and boolean input overloads of basic_istream::operator>> (technically, the overloads of num_get::get they call), if the input cannot be parsed as a valid value or if the value parsed does not fit in the destination type.
- The time input manipulator std::get_time (technically, time_get::get it calls), if the input cannot be unambiguously parsed as a time value according to the given format string.
- The currency input manipulator std::get_money (technically, money_get::get it calls), if the input cannot be unambiguously parsed as a monetary value according to the locale rules.
- The extraction operators of all
RandomNumberEngines, if bad input is encountered.
- The extraction operators of all
RandomNumberDistributions, if bad input is encountered.
- The unformatted input functions basic_istream::get if they fails to extract any characters.
- basic_istream::getline, if it extracts no characters, if it fills in the provided buffer without encountering the delimiter, or if the provided buffer size is less than 1.
- basic_istream::read, if the end-of-file condition occurs on the input stream before all requested characters could be extracted.
- basic_istream::seekg on failure
- basic_ostream::tellp on failure
- The constructors of std::basic_fstream, std::basic_ifstream, and std::basic_ofstream that takes a filename argument, if the file cannot be opened.
- basic_fstream::open, basic_ifstream::open, and basic_ofstream::open if the file cannot be opened.
- basic_fstream::close, basic_ifstream::close, and basic_ofstream::close if the file cannot be closed.
The badbit is set by the following standard library functions:
- basic_ostream::put if it fails to insert a character into the output stream, for any reason.
- basic_ostream::write if it fails to insert a character into the output stream, for any reason.
- Formatted output functions operator<<, std::put_money, and std::put_time, if they encounter the end of the output stream before completing output.
- basic_ios::init when called to initialize a stream with a null pointer for
- basic_istream::putback and basic_istream::unget when called on a stream with a null
- basic_ostream::operator<<(basic_streambuf*) when a null pointer is passed as the argument.
- basic_istream::putback and basic_istream::unget if
rdbuf()->sputbackc() or rdbuf()->sungetc() return traits::eof().
- basic_istream::sync, basic_ostream::flush, and every output function on a
unitbufoutput stream, if rdbuf()->pubsync() returns -1
- Every stream I/O function if an exception is thrown by any member function of the associated stream buffer (e.g. sbumpc(), xsputn(), sgetc(), overflow(), etc)
- ios_base::iword and ios_base::pword on failure (e.g. failure to allocate memory)
|This section is incomplete|
Reason: no example
The following table shows the value of
basic_ios accessors (good(), fail(), etc.) for all possible combinations of ios_base::iostate flags:
|ios_base::iostate flags|| |