È lo stesso problema dell'altro thread, che deriva dal mescolare funzioni di input formattato e non formattato.
L'operatore >> lascia nel buffer di input il newline finale, il che non è un problema se usi sempre >> (dato che salta automaticamente tutti gli a capi/spazi/tabulazioni iniziali), ma dà fastidio a getline, che trova subito un ritorno a capo e pensa che la stringa da leggere sia finita.

La soluzione, come spiegato prima, è una chiamata a ignore subito dopo l'ultima cin>> del ciclo, in modo da non lasciare in giro dei newline spurii.