std::strstreambuf::str
提供: cppreference.com
< cpp | io | strstreambuf
char* str()const; | ||
freeze() を呼び、 get 領域の先頭ポインタのコピー std::streambuf::eback() を返します。
std::strstream によって提供されるインタフェースを通して構築されたすべての書き込み可能な std::strstreambuf
オブジェクトについて、 get 領域の先頭は put 領域の先頭でもあります。
目次 |
[編集]引数
(なし)
[編集]戻り値
eback() のコピー。 ヌルポインタの場合もあります。
[編集]ノート
この関数は一般的には std::strstream インタフェースを通して呼ばれます。
freeze() の呼び出しは、次の明示的な freeze(false) の呼び出しまで返されたポインタが有効であり続けることを保証します。 そうでなければ (動的バッファの場合)、あらゆる出力操作はポインタを無効化するであろうバッファの再確保を発生させる可能性があります。 また、それは、バッファ (より一般的にはそれを管理する std::strstream) が破棄される前に freeze(false) が呼ばれなければ、 std::strstreambuf
のデストラクタでのメモリリークも発生させます。
[編集]例
Run this code
#include <strstream>#include <iostream> 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 のパブリックメンバ関数) | |
出力バッファにアクセスします ( std::ostrstream のパブリックメンバ関数) | |
出力バッファにアクセスします ( std::istrstream のパブリックメンバ関数) |