[C++] stringstream

6988 ワード

stringstream

stringstream所定の文字列から必要な情報を抽出する.
#include <iostream>
#include <string>
#include <sstream>

int main(void)
{
    float num;
    std::stringstream stream1;

    std::string str = "25 1 3 .235\n1111111\n22222absdaw";
    stream1.str(str);

    while (stream1 >> num)
        std::cout << "num: " << num << std::endl;

    return 0;
}
numに適したデータ型の情報がなくなるまで、ストリームからデータを抽出/コピーし続けます.

str()関数

  • str(string s):現在のstreamの値をsに変更します.
  • str():現在のStringstreamに格納されている文字列のコピーを返します.
  • 例1

    #include <iostream>
    #include <string>
    #include <sstream>
    #include <vector>
    
    int main(void)
    {
        std::vector<std::string> input(3, ""); // given input
        input[0] = "1 Kim 89";
        input[1] = "2 Moon 100";
        input[2] = "3 Chan 78";
    
        for (int i = 0; i < input.size(); i++)
        {
            int num, score;
            std::string name;
    
            std::stringstream ss;
            ss.str(input[i]);
    
            ss >> num;
            ss >> name;
            ss >> score;
    
            std::cout << num << " " << name << " " << score << std::endl;
        }
    
        return 0;
    }
    前述したように、stringでは、番号/名称/整数を分けて格納する場合に使用したほうがよい.

    参考資料

  • Stringstreamの使い方まとめ