vendettaaaaa
19-09-2013, 22:14
cout << "Where do you want to shoot your arrow?" << endl;
char c; cin.get(c); if (c != '\n') cin.putback(c); // Needed to clear the buffer from the newline char
getline(cin, choice);
Mi sono imbattuto in questo problema oggi. Praticamente, avendo mischiato >> e getline, capitava, prima che inserissi la seconda riga, che dopo il cout il programma andasse avanti senza aspettare l'input dell'utente. Dopo un po' ho capito che nel buffer di cin rimane un \n che causa quindi a getline di uscire subito (perchè interrompe la lettura quando incontra un char delimitatore, che di default è proprio \n).
Vi chiedo: ci sono modi più eleganti di ovviare al problema o l'unica è togliere a mano \n dal buffer?
char c; cin.get(c); if (c != '\n') cin.putback(c); // Needed to clear the buffer from the newline char
getline(cin, choice);
Mi sono imbattuto in questo problema oggi. Praticamente, avendo mischiato >> e getline, capitava, prima che inserissi la seconda riga, che dopo il cout il programma andasse avanti senza aspettare l'input dell'utente. Dopo un po' ho capito che nel buffer di cin rimane un \n che causa quindi a getline di uscire subito (perchè interrompe la lettura quando incontra un char delimitatore, che di default è proprio \n).
Vi chiedo: ci sono modi più eleganti di ovviare al problema o l'unica è togliere a mano \n dal buffer?