# std::basic_streambuf<CharT,Traits>::setp

< 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

### 参阅

setg | 重定位输出序列的起始、下一位置和终止指针 (受保护成员函数)