Оператор извлечения «>>» обеспечивает чтение разделенных пробелом целых чисел без чтения разделителя с помощью:
ss >> num;
вместо дополнительного чтения разделителя в исходном коде:
ss >> num >> ch;
, потому что для Для стандартных потоков флаг skipws устанавливается при инициализации. И это делает более простым чтение разделенных пробелами целых чисел.
Чтобы оба разделителя работали одинаково, добавьте
ss >> noskipws;
, как в следующем коде:
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main () {
string str;
getline (cin, str);
stringstream ss (str);
ss >> noskipws;
vector<int> arr;
while (!ss.eof ()) {
int num;
char ch;
ss >> num >> ch;
arr.push_back (num);
}
for (int i = 0; i < arr.size (); i++) {
cout << arr.at (i) << endl;
}
return 0;
}