std::strstream::strstream
提供: cppreference.com
<tbody>
</tbody>
strstream(); |
(1) | |
strstream(char* s, int n, std::ios_base::openmode mode = std::ios_base::in | std::ios_base::out); |
(2) | |
新しい入出力 strstream およびそのベースとなる std::strstreambuf を構築します。
1) ベースとなる std::strstreambuf をデフォルト構築し (動的に成長するバッファを作成します)、その strstreambuf メンバのアドレスを使用して基底クラスを初期化します。
2) ベースとなる std::strstreambuf メンバのアドレスを使用して基底クラスを初期化します。 std::strstreambuf は以下の2つの方法のいずれかで初期化されます。 いずれもユーザ提供の固定サイズ配列を使用します。
a)
mode に app ビットがセットされていない場合は、 strstreambuf(s, n, s) を呼ぶことによってバッファを構築します。 s によって最初の要素が指されている配列に n 個より少ない要素しかない場合、動作は未定義です。b)
mode に app ビットがセットされている場合は、 strstreambuf(s, n, s + std::strlen(s)) を呼ぶことによってバッファを構築します。 s によって最初の要素が指されている配列に n 個より少ない要素しかない場合、または配列が有効なヌル終端文字シーケンスを格納していない場合、動作は未定義です。引数
| s | - | 出力バッファとして使用する文字配列 | ||||||||||||||
| n | - | 出力用に使用される配列のサイズ | ||||||||||||||
| mode | - | ストリームオープンモードを指定します。 これはビットマスク型であり、以下の定数が定義されています (が、 app のみ使用されます)。
|
例
Run this code
#include <iostream>
#include <strstream>
#include <string>
int main()
{
// dynamic buffer
std::strstream s1; // dynamic buffer
s1 << 1 << ' ' << 3.14 << " example" << std::ends;
std::cout << "buffer holds '" << s1.str() << "'\n";
s1.freeze(false);
int n; double d;
std::string w;
s1 >> n >> d >> w;
std::cout << "Read back: n = " << n
<< " d = " << d
<< " w = '" << w << "'\n";
// static buffer
char arr[20] = "-1 -3.14 ";
std::strstream s2(arr, sizeof arr, std::ios_base::app);
s2 << "another" << std::ends;
std::cout << "buffer holds: '" << s2.str() << "'\n";
s2 >> n >> d >> w;
std::cout << "Read back: n = " << n
<< " d = " << d
<< " w = '" << w << "'\n";
}
出力:
buffer holds '1 3.14 example'
Read back: n = 1 d = 3.14 w = 'example'
buffer holds: '-1 -3.14 another'
Read back: n = -1 d = -3.14 w = 'another'
関連項目
| strstreambuf オブジェクトを構築します ( std::strstreambufのパブリックメンバ関数)
| |
| strstream を構築し、オプションでバッファを確保します ( std::istrstreamのパブリックメンバ関数)
| |
| strstream を構築し、オプションでバッファを確保します ( std::ostrstreamのパブリックメンバ関数)
|