PDA

View Full Version : [C++] problema con il cin


sobrano
29-05-2010, 09:54
guardate questo semplice programma,se inserisco un valore errato come una lettera entro in un ciclo infinito!!!
è come se sbagliando la prima insersione della variabile intera n il compilatore contiuasse a considerarla all'infinito (valutando di conseguenza il cin sempre in fallimento)
quello che vorrei è che ad ogni inizio di ciclo il cin torni alle condizioni iniziali come se non lo avessi mai usato

#include <iostream>
using namespace std;

int main()
{
int n;
do{
cin.clear();
cout<<"inserisci un intero: ";cin>>n;
}while(cin.fail());
return 0;
}

fero86
29-05-2010, 12:24
guardate questo semplice programma,se inserisco un valore errato come una lettera entro in un ciclo infinito!!! naturale: una volta che il failbit é settato nessuno lo ripulisce e la condizione del while resta sempre vera.



è come se sbagliando la prima insersione della variabile intera n il compilatore contiuasse a considerarla all'infinito (valutando di conseguenza il cin sempre in fallimento) comunque considera che il carattere errato non viene estratto.



quello che vorrei è che ad ogni inizio di ciclo il cin torni alle condizioni iniziali come se non lo avessi mai usato puoi anche ripulire il failbit, ma comunque continuerai a leggere il carattere errato e quindi il failbit continuerá ad essere settato ad ogni iterazione :stordita:

sobrano
29-05-2010, 12:46
quindi come si può risolvere il problema?
l'obiettivo è far inserire un valore all'utente,e gli si ripropone la domanda fino a che il valore inserito è del giusto tipo,senza dover ogni volta riaprire il programma solo per aver sbagliato adigitare