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