# std::basic_ios<CharT,Traits>::operator bool

From cppreference.com
< cpp‎ | io‎ | basic ios

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

Run this code

    #include <iostream>
    #include <sstream>

    int main()
    {
        std::istringstream s("1 2 3 error");
        int n;
        std::cout << std::boolalpha << "s is " << static_cast<bool>(s) << '\n';
        while (s >> n) {
            std::cout << n << '\n';
        }
        std::cout << "s is " << static_cast<bool>(s) << '\n';
    }

Output:

    s is true
    1
    2
    3
    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

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/io/basic_ios/operator_bool&oldid=89259"