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.