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

< cpp‎ | io‎ | basic ios

operator void*() const; | (1) | (C++11 前)
explicit operator bool() const; | (2) | (C++11 起)

检查流是否无错误。

1) 若 fail() 返回 true 则返回空指针，否则返回非空指针。此指针可隐式转换为 bool ，并可用于布尔语境。
2) 若流无错误且已为 I/O 操作就绪则返回 true 。尤其是返回 !fail() 。

此运算符使得以流和返回到流引用的函数为循环条件可行，产生惯用的 C++ 输入循环，例如 while(stream >> value) {...} 或 while(getline(stream, string)){...} 。这种循环仅若输入操作成功才执行循环体。

### 参数

（无）

### 返回值

若流无错误则为 true ，否则为 false 。

### 示例

    #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';
    }

输出：

    s is true
    1
    2
    3
    s is false

### 参阅

下表显示 `basic_ios` 访问器（ `good()`、 `fail()` 等）对于 `ios_base::iostate` 标志的所有可能组合的值：

`ios_base::iostate` 标志 | `basic_ios` 访问器
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