operator void*() const; | (1) | (until C++11) |
explicit operator bool() const; | (2) | (since C++11) |
Checks whether the stream has no errors.
1) Returns a null pointer if
fail() returns true, otherwise returns a non-null pointer. This pointer is implicitly convertible to bool and may be used in boolean contexts. 2) Returns
true if the stream has no errors and is ready for I/O operations. Specifically, returns !fail(). This operator makes it possible to use streams and functions that return references to streams as loop conditions, resulting in the idiomatic C++ input loops such as while(stream >> value) {...} or while(getline(stream, string)){...}. Such loops execute the loop's body only if the input operation succeeded.
Parameters
(none).
Return value
true if the stream has no errors, false otherwise.
Example
#include <iostream>
#include <sstream>
int main()
{
std::istringstream s("1 2 3 error");
int n;
std::cout << std::boolalpha << "(bool)s is " << (bool)s << '\n';
while (s >> n) {
std::cout << n << '\n';
}
std::cout << std::boolalpha << "(bool)s is " << (bool)s << '\n';
}Output:
(bool)s is true 1 2 3 (bool)s is false
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 |
Please login to continue.