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 为空则无底层缓冲区),并以 which 所指定的模式打开的 basic_spanbuf 。指向获取与放置区的指针按以下方式设置,或若表格中未提及则设置为空指针值:
打开模式中设置的位
(影响指向获取区的指针)
设置后的返回值
eback() gptr() egptr()
std::ios_base::in s.data() s.data() s.data() + s.size()
打开模式中设置的位
(影响指向放置区的指针)
设置后的返回值
pbase() pptr() epptr()
std::ios_base::out && !std::ios_base::ate s.data() s.data() s.data() + s.size()
std::ios_base::out && std::ios_base::ate s.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> 的公开成员函数)