C++ベース::文字ストリーム(stringstream)

3655 ワード

//      
stringstream ss;
ss << "hello ";
ss << "world!";

std::cout << ss.str() << std::endl;
//  stringstream  ,operator<<             
//            str()    
ss.str()関数には2つのリロードバージョンがあり、1つのパラメータなし形式で、文字ストリームstringstreamのデータを文字列タイプに変換し、1つの文字列をタイプとするパラメータで、上書きstringstreamの既存のデータを使用します.
//      
ss.str(""); 

ss.clear() vs ss.str(“”)
文字ストリーム(stringstream)に対してクリアを実行する動作はss.str("")ではなくss.clear()ss.clear()継承元iosストリームのエラー状態をクリアするために使用され、例えば、ストリームの状態がeofbit(0,end of file)に設定され、呼び出されclear()メソッドは、その状態をgoodbit(no error)に設定する.1
std::cout << ss.rdstate() << std::endl;
                // 0
ss.setstate(std::ios::eofbit);
std::cout << ss.rdstate() << std::endl;
                // 1
ss.clear();
std::cout << ss.rdstate() << std::endl;
                // 0

.str()メンバーメソッドの戻り値タイプ
C++のstringタイプ定義:
typedef basic_string<char, char_traits<char>, allocator<char> >
    string;
  • stringタイプのsにとって、s.c_str():string ==》 char*
  • 対流タイプsの場合、s.str():stream==string
  • 文字ストリームとファイルストリームのインタラクション
    ファイルストリームのstr()メンバー関数を使用して、文字ストリームのデータをstringタイプに変換し<<または>>演算子を使用して、文字列をストリームに書きます.
    std::stringstream ss;
    ss << "hello " << 5 << " "<< 5.5;
    std::cout << ss.str() << std::endl;
                                //      

    文字ストリームの機能
    任意のデータ型の文字列形式の組合せ
    ss.str("");                             //      
    ss << "Attr" << i;                      //                
    std::string str = ss.str();             //          

    How do you clear a stringstream variable? ↩