std::ios_base::iostate - cppreference.com

From cppreference.com

typedef/*implementation defined*/iostate;staticconstexpriostategoodbit=0;staticconstexpriostatebadbit=/* implementation defined */staticconstexpriostatefailbit=/* implementation defined */staticconstexpriostateeofbit=/* 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, intn;istringstreambuf("1");buf>>n; sets eofbit, but not failbit: the integer 1 was successfully parsed and stored in n. On the other hand, boolb;istringstreambuf("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

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 eofbitfailbitbadbit

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>)

[edit]

sets state flags
(public member function of std::basic_ios<CharT,Traits>)

[edit]

modifies state flags
(public member function of std::basic_ios<CharT,Traits>)

[edit]