Namespaces
Variants

std::strstreambuf:: str

From cppreference.net
char * str ( ) ;
(C++98で非推奨)
(C++26で削除)

freeze() を呼び出し、その後、取得領域の開始ポインタのコピーである std::streambuf::eback() を返します。

書き込み可能な std::strstreambuf オブジェクトのうち、 std::strstream によって提供されるインターフェースを通じて構築されたすべてのオブジェクトについて、get領域の開始位置はput領域の開始位置でもある。

目次

パラメータ

(なし)

戻り値

eback() のコピーであり、nullポインタである可能性があります。

注記

この関数は通常、 std::strstream インターフェースを通じて呼び出されます。

freeze() の呼び出しは、返されるポインタが次に明示的に freeze ( false ) が呼び出されるまで有効であることを保証します:そうでない場合(動的バッファでは)、出力操作によってバッファの再割り当てがトリガーされ、ポインタが無効になる可能性があります。また、 std::strstreambuf のデストラクタでメモリリークを引き起こします。ただし、バッファ(または、より一般的にはそれを管理する std:: strstream )が破棄される前に freeze ( false ) が呼び出された場合を除きます。

#include <iostream>
#include <strstream>
int main()
{
    std::strstream dyn; // 動的に確保された読み書きバッファ
    dyn << "Test: " << 1.23 << std::ends;
    std::strstreambuf* buf = dyn.rdbuf();
    std::cout << "R/W buffer holds [" << buf->str() // または 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-only buffer holds [" << buf->str() // または user.str()
              << "]\n";
    std::istrstream lit("1 2 3"); // 固定サイズの読み取り専用バッファ
    buf = lit.rdbuf();
    std::cout << "Read-only buffer holds [" << buf->str() // または lit.str()
              << "]\n";
}

出力:

R/W buffer holds [Test: 1.23]
Write-only buffer holds [1.23]
Read-only buffer holds [1 2 31 2 3]

関連項目

出力バッファにアクセスする
( std::strstream の公開メンバ関数)
出力バッファにアクセスする
( std::ostrstream の公開メンバ関数)
出力バッファにアクセスする
( std::istrstream の公開メンバ関数)