Dawno nie robiłem w C++ więc nie wiem czy dobrze pamiętam ale chyba można wczytać całą linię, zamienić na strumień (podobny do cin) i z tego strumienia pobierać liczby sprawdzając czy nie wystąpił błąd lub czy w strumieniu zostało coś jeszcze jest do odczytu.
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
string linia = "1 4 15 3";
//getline(cin, linia); // pobranie calej lini z cin
istringstream linia_strumien(linia);
int liczba;
int suma = 0;
while(linia_strumien >> liczba) {
suma += liczba;
cout << "liczba: " << liczba << endl;
}
cout << "suma: " << suma << endl;
return 0;
}