Il cin.ignore()
http://www.cplusplus.com/reference/i...stream/ignore/
serve per scartare un carattere specifico. Quando acquisisci un valore tramite l'operatore>>, ti viene restituito quel valore (se valido), ma il carattere di newline '\n' rimane nel buffer. Alla successiva lettura, cin legge per primo il '\n' e pensa che l'input sia finito. Una successiva lettura "dovrebbe" invece essere corretta.

Un altro modo può essere cin.sync()
http://www.cplusplus.com/reference/i.../istream/sync/

Altrimenti:
codice:
while ( cin.get() != '\n' );
dovrebbe essere sufficiente.

Dove metterlo? Dopo aver usato l'operatore >> (altri casi dovrebbero essere "safe").