std::strstream::strstream
提供: cppreference.com
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 のパブリックメンバ関数)
|