Namespaces
Variants

std::strstreambuf:: pcount

From cppreference.net
int pcount ( ) const ;
(C++98で非推奨)
(C++26で削除)

出力シーケンスに書き込まれた文字数を返します。

put領域の次のポインタ( std::streambuf::pptr() )がヌルポインタの場合、ゼロを返します。

それ以外の場合、put領域の次のポインタからput領域の先頭ポインタを引いた値を返します。つまり pptr ( ) - pbase ( ) です。

目次

パラメータ

(なし)

戻り値

出力エリアに書き込まれた文字数。

#include <iostream>
#include <strstream>
int main()
{
    std::strstream dyn; // 動的に割り当てられた出力バッファ
    dyn << "Test: " << 1.23 << std::ends;
    std::strstreambuf* buf = dyn.rdbuf();
    std::cout << "出力のサイズは "
              << buf->pcount() // または単に buf.pcount()
              << " で、内容は \"" << dyn.str() << "\"\n";
    dyn.freeze(false); // 動的 strstream で .str() を呼び出した後
    char arr[10];
    std::ostrstream user(arr, 10); // ユーザー提供の出力バッファ
    buf = user.rdbuf();
    user << 1.23; // 注意: std::ends なし
    std::cout.write(arr, buf->pcount()); // または単に user.pcount()
    std::cout << '\n';
    std::istrstream lit("1 2 3"); // 読み取り専用固定サイズバッファ
    buf = lit.rdbuf();
    // istrstream にはメンバー pcount() がないため、lit.pcount() は機能しない
    std::cout << "入力専用 pcount() = " << buf->pcount() << '\n';
}

出力:

出力のサイズは 11 で、内容は "Test: 1.23"
1.23
入力専用 pcount() = 0

関連項目

書き込まれた文字数を取得する
( std::strstream の公開メンバー関数)
書き込まれた文字数を取得する
( std::ostrstream の公開メンバー関数)