C++で標準入力から数が不定なスペース区切りの文字列を読み込んで分割する

c++

std::getline(basic_istream, basic_string, delim) を使う。 この関数は第三引数 delim か EOF に達するとそこまでの文字列を、delim を渡さないと is.widen(’\n’) が渡されるので一行出力する。 一度 stringstream にしているのは、getline(cin, s, ’ ‘) のように直接読み込もうとすると最後の文字の後に delim も EOF も来ずに止まってしまうため。

#include <bits/stdc++.h>
using namespace std;

int main()
{
    string s;
    getline(cin, s);
    stringstream ss(s);
    while (getline(ss, s, ' '))
    {
        cout << s << " " << endl;
    }
    return 0;
}