std::strstream::str
提供: cppreference.com
char* str(); |
||
凍結した後、バッファの先頭へのポインタを返します。 実質的に rdbuf()->str() を呼びます。
ノート
C の文字列として結果を使用する str() の呼び出しの前に、ストリームバッファはヌル終端されなければなりません。 stream << 1.2 などの通常の出力はヌル終端を格納しません。 ヌル終端は、一般的には std::ends を使用して、明示的に追加しなければなりません。
str() の呼び出しの後、動的ストリームは凍結状態になります。 この strstream オブジェクトが作成されたスコープを終了する前に、 freeze(false) の呼び出しが要求されます。 そうでなければ、デストラクタがメモリリークします。 さらに、凍結されたストリームへのさらなる出力は、確保されたバッファの終端に到達すると切り捨てられることがあり、これはバッファをヌル終端されない状態に置くことがあります。
引数
(なし)
戻り値
紐付けられている std::strsteambuf のバッファの先頭へのポインタ、またはバッファが利用可能でなければ NULL。
例
Run this code
#include <strstream>
#include <iostream>
int main()
{
std::strstream dyn; // dynamically-allocated output buffer
dyn << "Test: " << 1.23; // not adding std::ends to demonstrate append behavior
std::cout << "The output stream holds \"";
std::cout.write(dyn.str(), dyn.pcount()) << "\"\n";
// the stream is now frozen due to 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のパブリックメンバ関数)
|