Scroll to navigation

std::ios_base::iostate(3) C++ Standard Libary std::ios_base::iostate(3)

NAME

std::ios_base::iostate - std::ios_base::iostate

Synopsis


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


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, 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.
* 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 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.
* 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 failbit in
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:


* basic_istream::putback
* basic_istream::unget
* basic_istream::seekg


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 eofbit or badbit is 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


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
unitbuf output 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


rdstate returns state flags
(public member function of std::basic_ios<CharT,Traits>)
setstate sets state flags
(public member function of std::basic_ios<CharT,Traits>)
clear modifies state flags
(public member function of std::basic_ios<CharT,Traits>)

Category:


* Todo no example

2024.06.10 http://cppreference.com