最終更新日時: 2017年03月15日 17時17分19秒 (JST)
Akira Takahashi が更新

履歴 編集

class template
<istream>

# std::basic_iostream

    namespace std {
      template<class CharT, class Traits = char_traits<CharT>>
      class basic_iostream :
        public basic_istream<CharT, Traits>,
        public basic_ostream<CharT, Traits> { …… };

      using iostream  = basic_iostream<char>;
      using wiostream = basic_iostream<wchar_t>;
    }

## 概要

`basic_iostream`は、入出力両方が可能なストリームを表現するクラスである。 すなわち、`rdbuf()`が指し示すストリームバッファオブジェクトに対する読み取り操作・書き込み操作を提供する。 入力操作は`basic_istream`から、出力操作は`basic_ostream`から継承している。

テンプレートパラメータとして文字型を受け取るようになっており、使用を容易にするため、以下のパラメータ設定済みエイリアスが定義されている。 このエイリアスは`<istream>`ヘッダと`<iosfwd>`ヘッダで定義されている。

エイリアス | 説明 | 対応バージョン
--- | --- | ---
`iostream` | `char`型。ASCII、UTF-8等のマルチバイト文字列や、バイナリデータとして使用する。 |
`wiostream` | `wchar_t`型。ワイド文字列として使用する。 |

## メンバ

基底クラスも参照のこと。

- `ios_base`
- `basic_ios`
- `basic_istream`
- `basic_ostream`

### 型

多重継承による曖昧さを解消するため、`basic_ios`と同じ内容でこのクラスでも定義されている。

名前 | 説明 | 対応バージョン
--- | --- | ---
`char_type` | テンプレート仮引数`CharT`の別名 | C++11
`int_type` | `Traits::int_type`の別名 | C++11
`pos_type` | `Traits::pos_type`の別名 | C++11
`off_type` | `Traits::off_type`の別名 | C++11
`traits_type` | テンプレート仮引数`Traits`の別名 | C++11

### 構築・破棄

名前 | 説明 | 対応バージョン
--- | --- | ---
`(constructor)` | コンストラクタ |
`(destructor)` | デストラクタ |
`operator=` | ムーブ代入 | C++11
`swap` | 値の交換 | C++11

- コピーコンストラクタとコピー代入演算子はdelete定義されている。
- ムーブコンストラクタ・ムーブ代入演算子と`swap`はprotectedで定義されている。

## 参照

- 基底クラス
  - `ios_base`
  - `basic_ios`