Namespaces
Variants

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

From cppreference.net
Standard library headers

이 헤더는 Input/Output 라이브러리의 일부입니다.

목차

클래스

원시 고정 문자 버퍼 장치를 구현함
(클래스 템플릿)
고정 문자 버퍼 입력 연산을 구현함
(클래스 템플릿)
고정된 문자 버퍼 출력 연산을 구현함
(클래스 템플릿)
고정된 문자 버퍼 입력/출력 연산을 구현함
(클래스 템플릿)
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)
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>;
}
**참고:** 제공된 HTML 코드 블록은 C++ 템플릿 선언과 별칭(alias) 선언으로 구성되어 있으며, 모든 내용이 `
` 태그 내에 포함되어 있습니다. 지침에 따라 코드 블록 내의 텍스트는 번역하지 않고 원본 그대로 유지되었습니다.

클래스 템플릿 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);
}