std::basic_streambuf<CharT,Traits>:: setp
| I/O manipulators | ||||
| Print functions (C++23) | ||||
| C-style I/O | ||||
| Buffers | ||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(C++20)
|
||||
| Streams | ||||
| Abstractions | ||||
| File I/O | ||||
| String I/O | ||||
| Array I/O | ||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(C++23)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
|
(
C++98/26*
)
|
||||
| Synchronized Output | ||||
|
(C++20)
|
||||
| Types | ||||
| Error category interface | ||||
|
(C++11)
|
||||
|
(C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
protected
:
void setp ( char_type * pbeg, char_type * pend ) ; |
||
设置定义放置区域指针的值。
调用后, pbase ( ) == pbeg 、 pptr ( ) == pbeg 以及 epptr ( ) == pend 均为 true 。
如果
[
pbeg
,
pend
)
中的任何范围不是
有效范围
,则行为未定义。
目录 |
参数
| pbeg | - | 指向输出区域新起始位置的指针 |
| pend | - | 指向输出区域新结束位置的指针 |
示例
#include <array> #include <cstddef> #include <iostream> // 基于 std::array 实现的 std::ostream 缓冲区 template<std::size_t size, class CharT = char> struct ArrayedStreamBuffer : std::basic_streambuf<CharT> { using Base = std::basic_streambuf<CharT>; using char_type = typename Base::char_type; ArrayedStreamBuffer() { // 设置输出区域指针以操作“buffer” Base::setp(buffer.data(), buffer.data() + size); } void print_buffer() { for (char_type i : buffer) { if (i == 0) std::cout << "\\0"; else std::cout << i; std::cout << ' '; } std::cout << '\n'; } private: std::array<char_type, size> buffer{}; // 值初始化“buffer” }; int main() { ArrayedStreamBuffer<10> streambuf; std::ostream stream(&streambuf); stream << "hello"; stream << ","; streambuf.print_buffer(); }
输出:
h e l l o , \0 \0 \0 \0
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用范围 | 发布时行为 | 正确行为 |
|---|---|---|---|
| LWG 4023 | C++98 |
setp
未要求输出序列必须是有效范围
|
要求必须满足 |
参见
|
重新定位输入序列的起始指针、下一个指针和结束指针
(受保护成员函数) |