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;
}