名前空間
変種
操作

std::basic_ios::operator bool

提供: cppreference.com
< cpp‎ | io‎ | basic ios
 
 
入出力ライブラリ
入出力マニピュレータ
Cスタイルの入出力
バッファ
(C++98で非推奨)
ストリーム
抽象
ファイル入出力
文字列入出力
配列入出力
(C++98で非推奨)
(C++98で非推奨)
(C++98で非推奨)
同期化出力
エラーカテゴリインタフェース
(C++11)
 
 
operator void*() const;
(1) (C++11未満)
explicit operator bool() const;
(2) (C++11以上)

ストリームにエラーが発生していないかどうか調べます。

1) fail()true を返す場合はヌルポインタを返し、そうでなければ非ヌルなポインタを返します。 このポインタは暗黙に bool に変換され、ブーリアンの文脈で使用できます。
2) エラーが発生しておらず入出力操作の準備ができていれば true を返します。 具体的には !fail() を返します。

この演算子によりループの条件としてストリームやストリームへの参照を返す関数を使用できるようになり、 while(stream >> value) {...}while(getline(stream, string)){...} のような慣習的な C++ の入力ループが使用できるようになります。 このようなループは入力操作が成功した場合にのみループ本体を実行します。

目次

[編集] 引数

(なし)

[編集] 戻り値

ストリームにエラーが発生していなければ 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

[編集] 関連項目

以下の表は ios_base::iostate フラグのすべての有り得る組み合わせに対する basic_ios のアクセサ (good()fail() など) の値を示します。

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