Dipende da quanti input fai e se usi spesso gli estrattori. Con cin.getline() non si verifica ad esempio. Purtroppo cin accoppiato agli estrattori è abbastanza rognoso da gestire bene.
Molti preferiscono acquisire una stringa con cin.getline() (o usare direttamente una std::string) e lavorare sul buffer acquisito, per gestire il loro input. Per lo meno si evita il comportamento da te descritto e/o di mandare in errore lo istream.