最終更新日時: 2025年07月09日 00時33分39秒 (JST)
Akira Takahashi が更新

履歴 編集

type-alias
<ios>

# std::ios_base::iostate

    using iostate = T2;

`T2` は処理系定義の型。

## 概要

`iostate` はストリームの状態に関するフラグを保持するためのビットマスク型である。
`iostate` には以下の表のようなビットマスク値が存在し、全て `ios_base` の静的メンバ定数として定義されている。

定数 | 設定された場合の効果
--- | ---
`badbit` | 入出力シーケンスの整合性が失われた事を示す。（ファイルからの回復不能な読み込みエラーなど）
`eofbit` | 入力操作において、入力シーケンスの最後に到達した事を示す。
`failbit` | 入力操作において想定した文字の読み込みに失敗した、あるいは、出力操作において要求した文字の生成に失敗した、といった事を示す。

また、上記に加えて、上記のいずれも発生していない事を示す、値ゼロの `goodbit` も `ios_base` の静的メンバ定数として定義されている。

## 備考

通常はこれらのフラグを直接使用することはあまり無く、サブクラスの `basic_ios` に存在する対応する状態チェック用関数を使用することが一般的である。
ただし、`fail()` はその名前に反して（？）`failbit` と `badbit` のいずれかが設定されていれば `true` を返す事に注意が必要。

## 例

    #include <iostream>
    #include <sstream>
    #include <string>

    void printstate(std::ios_base::iostate state)
    {
      std::cout << std::boolalpha;
      std::cout << "badbit  = " << ((state & std::ios_base::badbit) != 0) << '\n';
      std::cout << "eofbit  = " << ((state & std::ios_base::eofbit) != 0) << '\n';
      std::cout << "failbit = " << ((state & std::ios_base::failbit) != 0) << "\n\n";
    }

    int main()
    {
      std::istringstream iss("abc");
      int i;
      iss >> i;
      printstate(iss.rdstate());

      iss.clear();
      std::string s;
      iss >> s;
      printstate(iss.rdstate());

      iss.clear();
      iss.putback('d');
      printstate(iss.rdstate());
    }

### 出力

    badbit  = false
    eofbit  = false
    failbit = true

    badbit  = false
    eofbit  = true
    failbit = false

    badbit  = true
    eofbit  = false
    failbit = false

## バージョン

## 言語

- C++98

### 処理系

- Clang: 3.0 ✅, 3.1 ✅, 3.2 ✅, 3.3 ✅, 3.4 ✅, 3.5.0 ✅, 3.6.0 ✅, 3.7.0 ✅, 3.8.0 ✅
- GCC: 4.3.6 ✅, 4.4.7 ✅, 4.5.4 ✅, 4.6.4 ✅, 4.7.3 ✅, 4.8.1 ✅, 4.8.2 ✅, 4.9.0 ✅, 4.9.1 ✅, 4.9.2 ✅, 5.1.0 ✅, 5.2.0 ✅, 6.0.0 ✅
- ICC: ??
- Visual C++: ??

## 参照

- `basic_ios::operator bool()`
- `basic_ios::operator!()`
- `basic_ios::rdstate()`
- `basic_ios::clear()`
- `basic_ios::setstate()`
- `basic_ios::good()`
- `basic_ios::eof()`
- `basic_ios::fail()`
- `basic_ios::bad()`
- `basic_ios::exceptions()`