Es una opcion, pero sync no solo se aplica al buffer de entrada. En c++ puedes limpiar el buffer de entrada igual que en C, o puedes usar la version de c++ (a fin de cuentas es lo mismo: leer hasta que no quede nada):
Código:
void fflush_stdin_c() {
char c;
while ((c = getchar()) != EOF && c != '\n');
}
void fflush_stdin_cpp_versio1() {
char c;
while((c = cin.get() ) != EOF && c != '\n');
}
void fflush_stdin_cpp_versio2() {
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
Si buscas un poco por ahi seguro que encuentras mas variantes para el flush de stdin.
Saludos
vosk