std::basic_spanbuf<CharT,Traits>::basic_spanbuf

来自cppreference.com
< cpp‎ | io‎ | basic spanbuf
basic_spanbuf() : basic_spanbuf(std::ios_base::in | std::ios_base::out) {}
(1)(C++23 起)
explicit basic_spanbuf( std::ios_base::openmode which )
    : basic_spanbuf(std::span<CharT>{}, which) {}
(2)(C++23 起)
explicit basic_spanbuf( std::span<CharT> buf, std::ios_base::openmode which =
                            std::ios_base::in | std::ios_base::out );
(3)(C++23 起)
basic_spanbuf( const basic_spanbuf& ) = delete;
(4)(C++23 起)
basic_spanbuf( basic_spanbuf&& rhs );
(5)(C++23 起)
1) 默认构造函数。创建无底层缓冲区且为同时输入和输出打开的 basic_spanbuf。指向获取与放置区的指针被设为空指针值。
2)(1),但 basic_spanbufwhich 所指定的模式打开。
3) 创建管理 buf 所引用的底层缓冲区(或若 buf 为空则无底层缓冲区)的 basic_spanbuf,并以 which 所指定的模式打开。按以下方式设置指向获取与放置区的指针,或若表格中未提及则设置为空指针值:
打开模式中设置的位
(影响指向获取区的指针)
设置后的返回值
eback()gptr()egptr()
std::ios_base::ins.data()s.data()s.data() + s.size()
打开模式中设置的位
(影响指向放置区的指针)
设置后的返回值
pbase()pptr()epptr()
std::ios_base::out && !std::ios_base::ates.data()s.data()s.data() + s.size()
std::ios_base::out && std::ios_base::ates.data()s.data() + s.size()s.data() + s.size()
4) 复制构造函数被弃置。basic_spanbuf 不可复制。
5) 移动构造函数。从 rhsstd::basic_streambuf 基类子对象移动构造它的基类子对象。指向获取与放置区的指针、打开模式及底层缓冲区(若存在)等同于 rhs 在构造前的这些值。
rhs 在移动构造后是否仍然保有底层缓冲区是实现定义的。

参数

buf-引用底层缓冲区的 std::span
rhs-另一 basic_spanbuf
which-指定流打开模式。它是位掩码类型,定义了下列常量:
常量解释
app每次写入前寻位到流结尾
binary二进制模式打开
in为读打开
out为写打开
trunc在打开时舍弃流的内容
ate打开后立即寻位到流结尾
noreplace (C++23)以独占模式打开

注解

这些构造函数常由 std::basic_ispanstreamstd::basic_ospanstreamstd::basic_spanstream 的构造函数调用。

示例

参阅

构造 basic_ispanstream
(std::basic_ispanstream<CharT,Traits> 的公开成员函数)
构造 basic_ospanstream
(std::basic_ospanstream<CharT,Traits> 的公开成员函数)
构造 basic_spanstream
(std::basic_spanstream<CharT,Traits> 的公开成员函数)