最終更新日時(UTC):
が更新

履歴 編集

function
<spanstream>

std::basic_spanstream::コンストラクタ(C++23)

explicit basic_spanstream(std::span<charT> s,
  ios_base::openmode which = ios_base::out | ios_base::in); // (1)

basic_spanstream(const basic_spanstream&) = delete;         // (2)

basic_spanstream(basic_spanstream&& rhs);                   // (3)

概要

basic_spanstreamオブジェクトを構築する。

ここで、初期値としてデータは、既存のファイルを上書きモードで開くことに似ており、ストリームの初期位置が先頭のまま、ストリーム内容の文字列を設定するものである。

  • (1) : 初期データとしてstd::span<charT>オブジェクトを指定して構築する
  • (2) : (削除)コピーコンストラクタ
  • (3) : ムーブコンストラクタ

効果

  • (1) : 内部で保持している basic_spanbuf<charT, traits> 型の固定長バッファを sb とすると、ベースクラスを basic_iostream<charT, traits>(addressof(sb)) で構築し、さらに sbbasic_spanbuf<charT, traits>(s, which) で初期化する
  • (2) : (削除)
  • (3) : 内部で保持している basic_spanbuf<charT, traits> 型の固定長バッファを sb とすると、ベースクラスを std::move(rhs) で構築し、さらに sbstd::move(rhs.sb) で初期化する。続いて、basic_ostream<charT, traits>::set_rdbuf(addressof(sb)) を呼び、basic_spanbuf を設定する。

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

int main()
{
  char buf[32] = "hello";
  std::span<char> span{buf};

  // (1) std::spanから構築
  std::spanstream ss1{span};

  std::cout << ss1.span().data() << std::endl;

  // (3) ムーブ構築
  std::spanstream ss3{std::move(ss1)};

  std::cout << ss3.span().data() << std::endl;
}

出力

hello
hello

バージョン

言語

  • C++23

処理系