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 */
|
||
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
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 ; setseofbit, but notfailbit: the integer 1 was successfully parsed and stored inn. On the other hand, bool b ; istringstream buf ( "tr" ) ; buf >> boolalpha >> b ; sets botheofbitandfailbit: 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, botheofbitandfailbitare 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 , basic_istream::readsome , basic_istream::ignore , 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:
Note that in nearly all situations, if eofbit is set, the failbit is set as well.
The failbit
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
eofbitorbadbitis 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 RandomNumberEngine s , if bad input is encountered.
- The extraction operators of all RandomNumberDistribution s , 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
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
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
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).
Example
|
This section is incomplete
Reason: no example |
See also
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>
)
|