名前空間
変種
操作

std::strstreambuf::str

From cppreference.com
< cpp‎ | io‎ | strstreambuf
 
 
 
 
char* str();
(C++98で非推奨)
(C++26で削除)

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

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

目次

[編集] パラメータ

(なし)

[編集] 戻り値

eback() のコピー。ヌルポインタである可能性もあります。

[編集] 注記

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

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

[編集]

#include <iostream>
#include <strstream>
 
int main()
{
    std::strstream dyn; // dynamically-allocated read/write buffer
    dyn << "Test: " << 1.23 << std::ends;
    std::strstreambuf* buf = dyn.rdbuf();
    std::cout << "R/W buffer holds [" << buf->str() // or dyn.str()
              << "]\n";
    dyn.freeze(false); // after calling .str() on a dynamic strstream
 
    char arr[10];
    std::ostrstream user(arr, 10); // fixed-size write-only buffer
    buf = user.rdbuf();
    user << 1.23 << std::ends;
    std::cout << "Write-only buffer holds [" << buf->str() // or user.str()
              << "]\n";
 
    std::istrstream lit("1 2 3"); // fixed-size read-only buffer
    buf = lit.rdbuf();
    std::cout << "Read-only buffer holds [" << buf->str() // or 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 の public メンバ関数) [編集]
出力バッファにアクセスする
(std::ostrstream の public メンバ関数) [編集]
出力バッファにアクセスする
(std::istrstream の public メンバ関数) [編集]
English 日本語 中文(简体) 中文(繁體)