close
名前空間
変種

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

提供: cppreference.com
 
 
入出力ライブラリ
入出力マニピュレータ
Cスタイルの入出力
バッファ
(C++98で非推奨)
ストリーム
抽象
ファイル入出力
文字列入出力
配列入出力
(C++98で非推奨)
(C++98で非推奨)
(C++98で非推奨)
同期化出力
エラーカテゴリインタフェース
(C++11)
 
 
<tbody> </tbody>
void setp( char_type* pbeg, char_type* pend );

put 領域を定義するポインタの値を設定します。 具体的には、呼び出しの後 pbase() == pbegpptr() == pbegepptr() == pend になります。

引数

pbeg - 新しい put 領域の先頭へのポインタ
pend - 新しい put 領域の終端へのポインタ

戻り値

(なし)

#include <iostream>
#include <array>

// Buffer for std::ostream implemented by std::array
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_{} // value-initialize buffer_ to all zeroes
    {
        Base::setp(buffer_.begin(), buffer_.end()); // set std::basic_streambuf
            // put area pointers to work with '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

関連項目

入力シーケンスの先頭、次、終端ポインタの位置を再設定します
(プロテクテッドメンバ関数) [edit]