名前空間
変種
操作

std::strstream::strstream

提供: cppreference.com
< cpp‎ | io‎ | strstream
 
 
入出力ライブラリ
入出力マニピュレータ
Cスタイルの入出力
バッファ
(C++98で非推奨)
ストリーム
抽象
ファイル入出力
文字列入出力
配列入出力
(C++98で非推奨)
(C++98で非推奨)
(C++98で非推奨)
同期化出力
エラーカテゴリインタフェース
(C++11)
 
 
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) modeapp ビットがセットされていない場合は、 strstreambuf(s, n, s) を呼ぶことによってバッファを構築します。 s によって最初の要素が指されている配列に n 個より少ない要素しかない場合、動作は未定義です。
b) modeapp ビットがセットされている場合は、 strstreambuf(s, n, s + std::strlen(s)) を呼ぶことによってバッファを構築します。 s によって最初の要素が指されている配列に n 個より少ない要素しかない場合、または配列が有効なヌル終端文字シーケンスを格納していない場合、動作は未定義です。

[編集] 引数

s - 出力バッファとして使用する文字配列
n - 出力用に使用される配列のサイズ
mode - ストリームオープンモードを指定します。 これはビットマスク型であり、以下の定数が定義されています (が、 app のみ使用されます)。
定数 説明
app 各書き込み前にストリームの終端へシークします
binary バイナリモードで開きます
in 読み込み用に開きます
out 書き込み用に開きます
trunc 開くときにストリームの内容を破棄します
ate 開いた直後にストリームの終端へシークします

[編集]

#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のパブリックメンバ関数) [edit]
strstream を構築し、オプションでバッファを確保します
(std::istrstreamのパブリックメンバ関数) [edit]
strstream を構築し、オプションでバッファを確保します
(std::ostrstreamのパブリックメンバ関数) [edit]