Namespaces
Variants

std::ostrstream:: str

From cppreference.net

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

バッファをフリーズした後、その先頭へのポインタを返します。実質的に rdbuf ( ) - > str ( ) を呼び出します。

目次

パラメータ

(なし)

戻り値

関連付けられた std:: strstreambuf のバッファの先頭へのポインタ。バッファが利用できない場合はヌルポインタ。

注記

str() を呼び出して結果を C 文字列として使用する前に、ストリームバッファは null 終端されている必要があります。 stream << 1.2 のような通常の出力では null 終端文字は保存されないため、明示的に追加する必要があります。通常はマニピュレータ std::ends を使用して追加します。

str() を呼び出した後、動的ストリームは凍結状態になります。この ostrstream オブジェクトが作成されたスコープを抜ける前に、 freeze(false) の呼び出しが必要です。そうしないと、デストラクタがメモリリークを引き起こします。また、凍結されたストリームへの追加出力は、割り当てられたバッファの終端に達すると切り詰められる可能性があり、これによりバッファがnull終端されない状態になる場合があります。

#include <iostream>
#include <strstream>
int main()
{
    std::ostrstream dyn; // 動的に割り当てられた出力バッファ
    dyn << "Test: " << 1.23; // 追加動作を実証するためにstd::endsを追加しない
    std::cout << "The output stream holds \"";
    std::cout.write(dyn.str(), dyn.pcount()) << "\"\n"; 
    // ストリームはstr()によりフリーズ状態
    dyn << " More text" << std::ends;
    std::cout << "The output stream holds \"";
    std::cout.write(dyn.str(), dyn.pcount()) << "\"\n";
    dyn.freeze(false);
}

出力例:

The stream holds "Test: 1.23"
The stream holds "Test: 1.23 More "

関連項目

バッファを凍結状態にし、入力シーケンスの先頭ポインタを返す
( std::strstreambuf の公開メンバー関数)