std::basic_ios::operator bool

From cppreference.com
operator void*() const;
(1) (until C++11)
explicit operator bool() const;
(2) (since C++11)

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 context.

2) Returns true if the stream has no errors occurred and is ready of 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.

Contents

[edit] Parameters

(none)

[edit] Return value

true if the stream has no errors occurred, false otherwise.

[edit] 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

[edit] See also

checks if no error has occurred i.e. I/O operations are available
(public member function)
checks if a non-recoverable error has occurred
(public member function)
checks if a recoverable error has occurred
(public member function)
checks if end-of-file has been reached
(public member function)
checks if an error has occurred (synonym of fail())
(public member function)