public member function
<ios> <iostream>
std::ios::good
Check whether state of stream is good
Returns true
if none of the stream's error state flags (eofbit, failbit and badbit) is set.
This function behaves as if defined as:
1 2 3
|
bool ios::good() const {
return rdstate() == goodbit;
}
| |
Notice that this function is not the exact opposite of member bad, which only checks whether the badbit flag is set.
Whether specific error flags are set, can be checked with member functions eof, fail, and bad:
iostate value
(member constant) | indicates | functions to check state flags |
good() | eof() | fail() | bad() | rdstate() |
goodbit | No errors (zero value iostate) | true | false | false | false | goodbit |
eofbit | End-of-File reached on input operation | false | true | false | false | eofbit |
failbit | Logical error on i/o operation | false | false | true | false | failbit |
badbit | Read/writing error on i/o operation | false | false | true | true | badbit |
eofbit, failbit and badbit are member constants with implementation-defined values that can be combined (as if with the bitwise OR operator).
goodbit is zero, indicating that none of the other bits is set.
Return Value
true
if none of the stream's state flags are set.
false
if any of the stream's state flags are set (badbit, eofbit or failbit).
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
// error state flags
#include <iostream> // std::cout, std::ios
#include <sstream> // std::stringstream
void print_state (const std::ios& stream) {
std::cout << " good()=" << stream.good();
std::cout << " eof()=" << stream.eof();
std::cout << " fail()=" << stream.fail();
std::cout << " bad()=" << stream.bad();
}
int main () {
std::stringstream stream;
stream.clear (stream.goodbit);
std::cout << "goodbit:"; print_state(stream); std::cout << '\n';
stream.clear (stream.eofbit);
std::cout << " eofbit:"; print_state(stream); std::cout << '\n';
stream.clear (stream.failbit);
std::cout << "failbit:"; print_state(stream); std::cout << '\n';
stream.clear (stream.badbit);
std::cout << " badbit:"; print_state(stream); std::cout << '\n';
return 0;
}
| |
Output:
goodbit: good()=1 eof()=0 fail()=0 bad()=0
eofbit: good()=0 eof()=1 fail()=0 bad()=0
failbit: good()=0 eof()=0 fail()=1 bad()=0
badbit: good()=0 eof()=0 fail()=1 bad()=1
|
Data races
Accesses the stream object.
Concurrent access to the same stream object may cause data races.
Exception safety
Strong guarantee: if an exception is thrown, there are no changes in the stream.
See also
- ios::fail
- Check whether either failbit or badbit is set (public member function
)
- ios::bad
- Check whether badbit is set (public member function
)
- ios::eof
- Check whether eofbit is set (public member function
)
- ios::rdstate
- Get error state flags (public member function
)
- ios::setstate
- Set error state flag (public member function
)
- ios::clear
- Set error state flags (public member function
)