std::basic_streambuf<CharT,Traits>::setp
来自cppreference.com
< cpp | io | basic streambuf
void setp( char_type* pbeg, char_type* pend ); |
||
设置定义放置区的指针值。特别是调用后 pbase() == pbeg 、 pptr() == pbeg 、 epptr() == pend 。
参数
pbeg | - | 指向放置区新起始的指针 |
pend | - | 指向放置区新结尾的指针 |
返回值
(无)
示例
运行此代码
#include <iostream> #include <array> // 以 std::array 实现的 std::ostream 缓冲区 template<std::size_t SIZE, class CharT = char> class ArrayedStreamBuffer : public std::basic_streambuf<CharT> { public: using Base = std::basic_streambuf<CharT>; using char_type = typename Base::char_type; ArrayedStreamBuffer() : buffer_{} // 值初始化 buffer_ 为全零 { Base::setp(buffer_.begin(), buffer_.end()); // 设置 std::basic_streambuf // 放置区指针以 'buffer_' 工作 } void print_buffer() { for (const auto& i: buffer_) { if (i == 0) { std::cout << "NULL"; } else { std::cout << i; } std::cout << " "; } std::cout << "\n"; } private: std::array<char_type, SIZE> buffer_; }; int main() { ArrayedStreamBuffer<10> streambuf; std::ostream stream(&streambuf); stream << "hello"; stream << ","; streambuf.print_buffer(); }
输出:
h e l l o , NULL NULL NULL NULL
参阅
重定位输出序列的起始、下一位置和终止指针 (受保护成员函数) |