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