str

提供:cppreference.com
移動: 案内, 検索


文法:

    #include <sstream>
    void str( const string& s );
    string str();

str()関数は2通りの使い方があります。一つ目は、現在のストリームで操作されている文字列のコピーを取得するという使い方です。これは、出力文字列を取得する場合にもっとも良く使用する使い方になります。

サンプル:

    ostringstream stream1;
    stream1 << "Testing!" << endl;
    cout << stream1.str();

2つ目は、ストリーム内に指定した文字列のコピーを設定する使い方です。これは入力ストリームに対してもっとも良く使用する使い方になります。

サンプル:

    istringstream stream1;
    string string1 = "25";
    stream1.str(string1);

注意:この関数は"get"ポインタをそのままにしますが、"put"ポインタは0にセットされます。これは、stringstreamを両方向の操作に使用するように初期化されている時に、混乱を引き起こす可能性があります。

str()はストリームをクリアしてリセットし、再利用する必要がある場合に手軽に利用できます。

警告: メンバー関数のclear()は、内部に持つ文字列オブジェクトを消去*しません*。これはiosオブジェクトの状態をクリアするだけです。これは内部で、basic_ios::clear()を呼び出します。

    istringstream stream1;
    float num;
 
    // 一度だけ利用する
    string string1 = "25 1 3.235\n1111111\n222222";
    stream1.str(string1);
    while( stream1 >> num ) cout << "num: " << num << endl;  // 1行に1つずつ数値を表示します
 
    // str()を使って、一度使った文字列ストリームをもう一度使う
    string string2 = "1 2 3 4 5  6 7 8 9 10";
    stream1.clear(); // あなたが思っているのと異なります!これはストリームのIO状態をクリアするのに必要です。
    stream1.str(string2);
 
    while( stream1 >> num ) cout << "num: " << num << endl;  // 1行に1つずつ数値を表示します

関連トピック: rdbuf, C++ I/Oストリーム

個人用ツール
名前空間
変種
操作
案内
ツールボックス
他の言語