std::strstreambuf
来自 cppreference.cn
定义于头文件 <strstream> |
||
class strstreambuf : public std::basic_streambuf<char> |
(C++98 中已弃用) (C++26 中移除) |
|
std::strstreambuf
是一个 std::basic_streambuf,其关联的字符序列是一个字符数组,它可以是常量(例如字符串字面量)、可修改但非动态的(例如栈分配的数组),或者动态的,在动态的情况下,可以允许 std::strstreambuf
根据需要重新分配数组以适应输出(例如,通过调用 delete[] 和 new[] 或用户提供的函数)。
std::strstreambuf
的典型实现保有四个私有数据成员
1) 缓冲区状态,一个位掩码类型,可以表示“已分配”(析构函数将解除分配)、“常量”(不允许输出)、“动态”(输出可能重新分配)或“冻结”(不允许解除分配和重新分配)这四个值的任意组合
2) 已分配缓冲区大小(缓冲区的起始位置不需要特殊的数据成员,它可以存储在继承的指针 eback() 中)
3) 指向用户提供的分配函数的指针
4) 指向用户提供的解除分配函数的指针。
内容 |
[编辑] 注解
在任何对具有动态缓冲区的流调用 str() 之后,都需要调用 freeze(false),以允许 strstreambuf
析构函数在必要时解除分配缓冲区。
strstreambuf
自 C++98 起已弃用,并自 C++26 起移除。 推荐的替代品是 std::spanbuf(自 C++23 起)。
[编辑] 成员函数
公共成员函数 | |
构造一个 strstreambuf 对象(公共成员函数) | |
[虚函数] |
析构一个 strstreambuf 对象,可选择性地解除分配字符数组(虚公共成员函数) |
设置/清除缓冲区的冻结状态 (公共成员函数) | |
标记缓冲区为冻结状态,并返回输入序列的起始指针 (公共成员函数) | |
返回输出序列中的下一个指针减去起始指针:写入的字符数 (公共成员函数) | |
受保护成员函数 | |
[虚函数] |
从输入序列中读取一个字符,而不推进下一个指针 (虚受保护成员函数) |
[虚函数] |
回退输入序列以取消获取一个字符 (虚受保护成员函数) |
[虚函数] |
将一个字符追加到输出序列,如果为动态且未冻结,则可能重新分配或初始分配缓冲区 (虚受保护成员函数) |
[虚函数] |
尝试用数组替换受控制的字符序列 (虚受保护成员函数) |
[虚函数] |
使用相对寻址重新定位输入序列、输出序列或两者的下一个指针 (虚受保护成员函数) |
[虚函数] |
使用绝对寻址重新定位输入序列、输出序列或两者的下一个指针 (虚受保护成员函数) |
继承自 std::basic_streambuf
成员类型
成员类型 | 定义 |
char_type
|
CharT |
traits_type
|
Traits ; 如果 Traits::char_type 不是 CharT ,则程序是非良构的。 |
int_type
|
Traits::int_type |
pos_type
|
Traits::pos_type |
off_type
|
Traits::off_type |
成员函数
[虚函数] |
析构 basic_streambuf 对象( std::basic_streambuf<CharT,Traits> 的虚公共成员函数) |
区域设置 | |
更改关联的区域设置并调用 imbue() ( std::basic_streambuf<CharT,Traits> 的公共成员函数) | |
获取关联区域设置的副本 ( std::basic_streambuf<CharT,Traits> 的公共成员函数) | |
定位 | |
调用 setbuf() ( std::basic_streambuf<CharT,Traits> 的公共成员函数) | |
调用 seekoff() ( std::basic_streambuf<CharT,Traits> 的公共成员函数) | |
调用 seekpos() ( std::basic_streambuf<CharT,Traits> 的公共成员函数) | |
调用 sync() ( std::basic_streambuf<CharT,Traits> 的公共成员函数) | |
读取区域 | |
获取在读取区域中立即可用的字符数 ( std::basic_streambuf<CharT,Traits> 的公共成员函数) | |
推进输入序列,然后读取一个字符,而不再次推进 ( std::basic_streambuf<CharT,Traits> 的公共成员函数) | |
(C++17 中移除) |
从输入序列中读取一个字符并推进序列 ( std::basic_streambuf<CharT,Traits> 的公共成员函数) |
从输入序列中读取一个字符,而不推进序列 ( std::basic_streambuf<CharT,Traits> 的公共成员函数) | |
调用 xsgetn() ( std::basic_streambuf<CharT,Traits> 的公共成员函数) | |
写入区域 | |
向写入区域写入一个字符并推进下一个指针 ( std::basic_streambuf<CharT,Traits> 的公共成员函数) | |
调用 xsputn() ( std::basic_streambuf<CharT,Traits> 的公共成员函数) | |
放回 | |
将一个字符放回到输入序列中 ( std::basic_streambuf<CharT,Traits> 的公共成员函数) | |
将输入序列中的下一个指针向后移动一位 ( std::basic_streambuf<CharT,Traits> 的公共成员函数) |
受保护成员函数
构造一个 basic_streambuf 对象(受保护成员函数) | |
(C++11) |
替换一个 basic_streambuf 对象(受保护成员函数) |
(C++11) |
交换两个 basic_streambuf 对象(受保护成员函数) |
区域设置 | |
[虚函数] |
对关联区域设置的更改做出反应 ( std::basic_streambuf<CharT,Traits> 的虚受保护成员函数) |
定位 | |
[虚函数] |
如果允许,用用户定义的数组替换缓冲区 ( std::basic_streambuf<CharT,Traits> 的虚受保护成员函数) |
[虚函数] |
使用相对寻址重新定位输入序列、输出序列或两者的下一个指针 ( std::basic_streambuf<CharT,Traits> 的虚受保护成员函数) |
[虚函数] |
使用绝对寻址重新定位输入序列、输出序列或两者的下一个指针 ( std::basic_streambuf<CharT,Traits> 的虚受保护成员函数) |
[虚函数] |
将缓冲区与关联的字符序列同步 ( std::basic_streambuf<CharT,Traits> 的虚受保护成员函数) |
读取区域 | |
[虚函数] |
获取关联输入序列中可用于输入的字符数(如果已知) ( std::basic_streambuf<CharT,Traits> 的虚受保护成员函数) |
[虚函数] |
从关联的输入序列读取字符到读取区域 ( std::basic_streambuf<CharT,Traits> 的虚受保护成员函数) |
[虚函数] |
从关联的输入序列读取字符到读取区域并推进下一个指针 ( std::basic_streambuf<CharT,Traits> 的虚受保护成员函数) |
[虚函数] |
从输入序列读取多个字符 ( std::basic_streambuf<CharT,Traits> 的虚受保护成员函数) |
返回指向读取区域的起始位置、当前字符和末尾的指针 (受保护成员函数) | |
推进输入序列中的下一个指针 (受保护成员函数) | |
重新定位输入序列的起始位置、下一个和末尾指针 (受保护成员函数) | |
写入区域 | |
[虚函数] |
向输出序列写入多个字符 ( std::basic_streambuf<CharT,Traits> 的虚受保护成员函数) |
[虚函数] |
从写入区域向关联的输出序列写入字符 ( std::basic_streambuf<CharT,Traits> 的虚受保护成员函数) |
返回指向写入区域的起始位置、当前字符和末尾的指针 (受保护成员函数) | |
推进输出序列的下一个指针 (受保护成员函数) | |
重新定位输出序列的起始位置、下一个和末尾指针 (受保护成员函数) | |
放回 | |
[虚函数] |
将一个字符放回到输入序列中,可能会修改输入序列 ( std::basic_streambuf<CharT,Traits> 的虚受保护成员函数) |