std::strstreambuf:: str
|
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
の公開メンバ関数)
|