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))で構築し、さらにsbをbasic_spanbuf<charT, traits>(s, which)で初期化する - (2) : (削除)
- (3) : 内部で保持している
basic_spanbuf<charT, traits>型の固定長バッファをsbとすると、ベースクラスをstd::move(rhs)で構築し、さらにsbをstd::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
処理系
- Clang: ??
- GCC: ??
- Visual C++: ??