Salve a tutti!
Non riesco a capire il comportamento che si verifica quando cerco di eseguire il controllo dell'input di un semplice numero intero...
Non voglio usare le eccezioni.. (essendo principiante è un'argomento che ancora non ho affrontato)..
Pensavo di cavermela in questo modo:
Codice PHP:
#include <iostream>
using namespace std;
int value;
int main() {
while(true) {
cout << "Type a number: ";
if(!(cin >> value))
break;
}
cout << "Errore!\n";
return(0);
}
In questo caso se ad esempio si dovesse verificare l'immissione di un carattere anziché un numero, chiude il ciclo e stampa il messaggio d'errore!
Ma se io non volessi interrompere il ciclo, avvisare dell'errore e ripetere il ciclo sino a quando il valore è inserito correttamente, ho pensato di cavarmela in questo modo:
Codice PHP:
#include <iostream>
using namespace std;
int value;
int main() {
while(true) {
cout << "Type a number: ";
if(!(cin >> value))
cout << "Error!\n";
else
break;
}
cout << "Number is: " << value << '\n';
return(0);
}
Ma questa volta non me la sono cavata molto bene.. poiché alla pressione di un carattere (e dopo l'invio ovviamente).. succede il delirio.. ovvero il ciclo ricomincia da capo, stampa il messaggio "Type a number: ", ma questa volta non aspetta l'immissione del valore ma ricomincia nuovamente il ciclo da capo.. come se fosse infinito!!
Come mai si comporta così?
Pensavo che ad ogni modo avesse aspettato l'immissione di un nuovo valore invece... no..
Devo abbandonare questo ragionamento ?
Il problema è che non riesco ad aspettare le eccezioni... (ancora lontane) e l'idea che si possa verificare un errore mi fa saltare un pò i nervi..
Grazie ancora!