Forse ho qualche confusione sulla funzione get...
codice:
int main() {
    char c;
    int i;
    cin >> i;

    if (!cin) cerr << "ERRORE" << endl;
    cin.clear(); //resetta lo stream
    while (cin.get(c) && c!='\n'); //svuota lo stream cin

    cin>>i;
    cout << i << endl;

    system("PAUSE");
    return 0;
}
io so che cin.get(c) si comporta allo stesso modo di cin >> c con la differenza (unica?) che get legge anche spazi bianchi..... Quindi compilando il codice io mi aspetto che quando arriviamo a while (cin.get(c) && c!='\n'); leggiamo una serie di caratteri finchè non digitiamo "a capo"... in questo modo i nuovi caratteri digitati vanno a riempire lo stream cin.... questo è ciò che mi aspetto ma evidentemente mi sbaglio....