Perché le operazioni di input formattato (in sostanza, l'operatore >>) lasciano nel buffer dello stream il carattere di newline, per cui getline legge questo carattere "avanzato" dalla precedente operazione di lettura e smette di leggere (perché pensa che l'utente abbia già premuto Invio). Il metodo sync svuota il buffer di lettura, eliminando così questo carattere spurio.