最終更新日時: 2026年01月08日 20時45分05秒 (JST)
yoh が更新

履歴 編集

class template
<spanstream>

# std::basic_ispanstream(C++23)

    namespace std {
      template <class CharT,
                class Traits = char_traits<CharT> >
      class basic_ispanstream : public basic_istream<CharT, Traits>;

      using ispanstream  = basic_ispanstream<char>;
      using wispanstream = basic_ispanstream<wchar_t>;
    }

## 概要

`std::basic_ospanstream`クラスは、`std::span` を使用した固定長ストリームバッファを入力元とする入力ストリームである。

## メンバ関数

名前 | 説明 | 対応バージョン
--- | --- | ---
`(constructor)` | コンストラクタ | C++23
`operator=` | ムーブ代入 | C++23
`swap` | 値の交換 | C++23
`rdbuf` | ストリームバッファオブジェクトの設定・取得 | C++23
`span` | `std::span`オブジェクトの設定・取得 | C++23

## 非メンバ関数

名前 | 説明 | 対応バージョン
--- | --- | ---
`swap` | 2つのオブジェクトを入れ替える | C++11

## メンバ型

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

## 例

    #include <iostream>
    #include <span>
    #include <spanstream>

    int main()
    {
      char abc[3] = {'A', 'B', 'C'};
      std::span<char> span{abc};
      std::ispanstream iss(span);

      char c;
      while (iss >> c) {
        std::cout << c << ' ';
      }
      std::cout << std::endl;
    }

### 出力

    A B C

## バージョン

### 言語

- C++23

### 処理系

- Clang: ??
- GCC: ??
- Visual C++: ??

## 参照

- P0448R4 A strstream replacement using span<charT> as buffer