Namespaces
Variants

Standard library header <spanstream> (C++23)

From cppreference.net
Standard library headers

このヘッダは Input/Output ライブラリの一部です。

HTMLタグ、属性、 タグ内のテキスト、C++固有の用語は翻訳せず、元のフォーマットを保持しました。 **翻訳結果:** **注記:** 指定された要件に従い、HTMLタグ、属性、 タグ内のテキスト、C++固有の用語(ospanstream, std::basic_ospanstream, char, typedefなど)は翻訳せず、元のフォーマットを保持しています。

目次

クラス

生の固定文字バッファデバイスを実装する
(クラステンプレート)
固定文字バッファ入力操作を実装する
(クラステンプレート)
固定文字バッファの出力操作を実装する
(クラステンプレート)
固定文字バッファの入出力操作を実装する
(クラステンプレート)
spanbuf (C++23) std:: basic_spanbuf < char >
(typedef)
wspanbuf (C++23) std:: basic_spanbuf < wchar_t >
(typedef)
ispanstream (C++23) std:: basic_ispanstream < char >
(typedef)
wispanstream (C++23) std:: basic_ispanstream < wchar_t >
(typedef)
ospanstream (C++23) std:: basic_ospanstream < char >
(typedef)
ospanstream (C++23) std:: basic_ospanstream < char >
(typedef)
wospanstream (C++23) std:: basic_ospanstream < wchar_t >
(typedef)
spanstream (C++23) std:: basic_spanstream < char >
(typedef)
wspanstream (C++23) std:: basic_spanstream < wchar_t >
(typedef)

関数

std::swap アルゴリズムを特殊化
(関数テンプレート)
std::swap アルゴリズムを特殊化
(関数テンプレート)
std::swap アルゴリズムを特殊化
(関数テンプレート)
std::swap アルゴリズムを特殊化
(関数テンプレート)

概要

namespace std {
  template<class CharT, class Traits = char_traits<CharT>>
    class basic_spanbuf;
  using spanbuf = basic_spanbuf<char>;
  using wspanbuf = basic_spanbuf<wchar_t>;
  template<class CharT, class Traits = char_traits<CharT>>
    class basic_ispanstream;
  using ispanstream = basic_ispanstream<char>;
  using wispanstream = basic_ispanstream<wchar_t>;
  template<class CharT, class Traits = char_traits<CharT>>
    class basic_ospanstream;
  using ospanstream = basic_ospanstream<char>;
  using wospanstream = basic_ospanstream<wchar_t>;
  template<class CharT, class Traits = char_traits<CharT>>
    class basic_spanstream;
  using spanstream = basic_spanstream<char>;
  using wspanstream = basic_spanstream<wchar_t>;
}
【注記】 - 提供されたコードはC++の標準ライブラリにおけるspanバッファとストリームのテンプレート宣言です - すべてのHTMLタグ、属性、コードブロック内のC++コードは原文のまま保持されています - C++専門用語(namespace, template, class, usingなど)は翻訳対象外です - コードブロック外の説明文がなかったため、翻訳対象となる自然言語のテキストはありませんでした

クラステンプレート std::basic_spanbuf

namespace std {
  template<class CharT, class Traits = char_traits<CharT>>
  class basic_spanbuf
    : public basic_streambuf<CharT, Traits> {
  public:
    using char_type      = CharT;
    using int_type       = typename Traits::int_type;
    using pos_type       = typename Traits::pos_type;
    using off_type       = typename Traits::off_type;
    using traits_type    = Traits;
    // コンストラクタ
    basic_spanbuf() : basic_spanbuf(ios_base::in | ios_base::out) {}
    explicit basic_spanbuf(ios_base::openmode which)
      : basic_spanbuf(std::span<CharT>(), which) {}
    explicit basic_spanbuf(
      std::span<CharT> s,
      ios_base::openmode which = ios_base::in | ios_base::out);
    basic_spanbuf(const basic_spanbuf&) = delete;
    basic_spanbuf(basic_spanbuf&& rhs);
    // 代入と交換
    basic_spanbuf& operator=(const basic_spanbuf&) = delete;
    basic_spanbuf& operator=(basic_spanbuf&& rhs);
    void swap(basic_spanbuf& rhs);
    // 取得と設定
    std::span<CharT> span() const noexcept;
    void span(std::span<CharT> s) noexcept;
    protected:
    // オーバーライドされた仮想関数
    basic_streambuf<CharT, Traits>* setbuf(CharT*, streamsize) override;
    pos_type seekoff(off_type off, ios_base::seekdir way,
                     ios_base::openmode which
                       = ios_base::in | ios_base::out) override;
    pos_type seekpos(pos_type sp,
                     ios_base::openmode which
                       = ios_base::in | ios_base::out) override;
  private:
    ios_base::openmode mode; // 説明専用
    std::span<CharT> buf; // 説明専用
  };
  template<class CharT, class Traits>
    void swap(basic_spanbuf<CharT, Traits>& x,
              basic_spanbuf<CharT, Traits>& y);
}

クラステンプレート std::basic_ispanstream

namespace std {
  template<class CharT, class Traits = char_traits<CharT>>
  class basic_ispanstream
    : public basic_istream<CharT, Traits> {
  public:
    using char_type      = CharT;
    using int_type       = typename Traits::int_type;
    using pos_type       = typename Traits::pos_type;
    using off_type       = typename Traits::off_type;
    using traits_type    = Traits;
    // コンストラクタ
    explicit basic_ispanstream(
      std::span<CharT> s,
      ios_base::openmode which = ios_base::in);
    basic_ispanstream(const basic_ispanstream&) = delete;
    basic_ispanstream(basic_ispanstream&& rhs);
    template<class ROS>
    explicit basic_ispanstream(ROS&& s);
    // 代入と交換
    basic_ispanstream& operator=(const basic_ispanstream&) = delete;
    basic_ispanstream& operator=(basic_ispanstream&& rhs);
    void swap(basic_ispanstream& rhs);
    // メンバ関数
    basic_spanbuf<CharT, Traits>* rdbuf() const noexcept;
    std::span<const CharT> span() const noexcept;
    void span(std::span<CharT> s) noexcept;
    template<class ROS>
    void span(ROS&& s) noexcept;
  private:
    basic_spanbuf<CharT, Traits> sb; // 説明専用
  };
  template<class CharT, class Traits>
    void swap(basic_ispanstream<CharT, Traits>& x,
              basic_ispanstream<CharT, Traits>& y);
}

クラステンプレート std::basic_ospanstream

namespace std {
  template<class CharT, class Traits = char_traits<CharT>>
  class basic_ospanstream
    : public basic_ostream<CharT, Traits> {
  public:
    using char_type      = CharT;
    using int_type       = typename Traits::int_type;
    using pos_type       = typename Traits::pos_type;
    using off_type       = typename Traits::off_type;
    using traits_type    = Traits;
    // コンストラクタ
    explicit basic_ospanstream(
      std::span<CharT> s,
      ios_base::openmode which = ios_base::out);
    basic_ospanstream(const basic_ospanstream&) = delete;
    basic_ospanstream(basic_ospanstream&& rhs);
    // 代入と交換
    basic_ospanstream& operator=(const basic_ospanstream&) = delete;
    basic_ospanstream& operator=(basic_ospanstream&& rhs);
    void swap(basic_ospanstream& rhs);
    // メンバ関数
    basic_spanbuf<CharT, Traits>* rdbuf() const noexcept;
    std::span<CharT> span() const noexcept;
    void span(std::span<CharT> s) noexcept;
  private:
    basic_spanbuf<CharT, Traits> sb; // 説明専用
  };
  template<class CharT, class Traits>
    void swap(basic_ospanstream<CharT, Traits>& x,
              basic_ospanstream<CharT, Traits>& y);
}

クラステンプレート std::basic_spanstream

namespace std {
  template<class CharT, class Traits = char_traits<CharT>>
  class basic_spanstream
    : public basic_iostream<CharT, Traits> {
  public:
    using char_type     = CharT;
    using int_type      = typename Traits::int_type;
    using pos_type      = typename Traits::pos_type;
    using off_type      = typename Traits::off_type;
    using traits_type   = Traits;
    // コンストラクタ
    explicit basic_spanstream(
      std::span<CharT> s,
      ios_base::openmode which = ios_base::out | ios_base::in);
    basic_spanstream(const basic_spanstream&) = delete;
    basic_spanstream(basic_spanstream&& rhs);
    // 代入と交換
    basic_spanstream& operator=(const basic_spanstream&) = delete;
    basic_spanstream& operator=(basic_spanstream&& rhs);
    void swap(basic_spanstream& rhs);
    // メンバ関数
    basic_spanbuf<CharT, Traits>* rdbuf() const noexcept;
    std::span<CharT> span() const noexcept;
    void span(std::span<CharT> s) noexcept;
  private:
    basic_spanbuf<CharT, Traits> sb; // 説明専用
  };
  template<class CharT, class Traits>
    void swap(basic_spanstream<CharT, Traits>& x,
              basic_spanstream<CharT, Traits>& y);
}