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 */ |
Specifies stream state flags. It is a BitmaskType, the following constants are defined:
Constant | Explanation |
---|---|
goodbit | no error |
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:
std::getline
if it completes by reaching the end of the stream, as opposed to reaching the specified terminating character. 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, failbit
may 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 eofbit
and failbit
: there was not enough characters to complete the parsing of the boolean true
. 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. 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. 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. basic_istream::sentry
constructor, executed at the beginning of every formatted input function: unless the skipws
bit 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 eofbit
and failbit
are set, and no input takes place. std::ws
, if it reaches the end of the stream while consuming whitespace (but, unlike the formatted input sentry, it does not set failbit
in this case). basic_istream::read
, basic_istream::get
, basic_istream::peek
, basic_istream::readsome
, basic_istream::ignore
, and basic_istream::getline
, when reaching the end of the stream. basic_istream::ignore
, when reaching the end of the stream before reaching the specified delimiter character. basic_istream::readsome
, if basic_streambuf::in_avail
returns -1
. The following functions clear eofbit
as a side-effect:
Note that in nearly all situations, if eofbit is set, the failbit is set as well.
The failbit is set by the following standard library functions:
basic_istream::sentry
constructor, executed at the beginning of every input function, if either eofbit
or badbit
is already set on the stream, or if the end of stream is encountered while consuming leading whitespace. 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. operator>>
if they fail to extract any characters. basic_istream::operator>>
if the streambuf argument is a null pointer or if no characters were inserted into the streambuf. 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. 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. 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. 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. 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 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. 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 rdbuf()
. basic_istream::putback
and basic_istream::unget
when called on a stream with a null rdbuf()
. 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 unitbuf
output stream, if rdbuf()->pubsync()
returns -1
. sbumpc()
, xsputn()
, sgetc()
, overflow()
, etc). ios_base::iword
and ios_base::pword
on failure (e.g. failure to allocate memory). 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 | basic_ios accessors |
|||||||
eofbit | failbit | badbit | good() | fail() | bad() | eof() | operator bool | operator! |
false | false | false | true | false | false | false | true | false |
false | false | true | false | true | true | false | false | true |
false | true | false | false | true | false | false | false | true |
false | true | true | false | true | true | false | false | true |
true | false | false | false | false | false | true | true | false |
true | false | true | false | true | true | true | false | true |
true | true | false | false | true | false | true | false | true |
true | true | true | false | true | true | true | false | true |
returns state flags (public member function of std::basic_ios<CharT,Traits> ) |
|
sets state flags (public member function of std::basic_ios<CharT,Traits> ) |
|
modifies state flags (public member function of std::basic_ios<CharT,Traits> ) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/ios_base/iostate