Nuovo in C++. Problemi durante il loop durante la gestione degli errori. Sto cercando di verificare se l'input dell'utente è un numero intero ed è positivo.C++ Controllo di un numero intero.
do{
cout << "Please enter an integer.";
cin >> n;
if (cin.good())
{
if (n < 0) {cout << "Negative.";}
else {cout << "Positive.";}
}
else
{
cout << "Not an integer.";
cin.clear();
cin.ignore();
}
}while (!cin.good() || n < 0);
cout << "\ndone.";
Quando si immette un numero intero, il ciclo si interrompe. Mi sembra di fraintendere l'uso intrinseco di cin.clear()
e cin.ignore()
e lo stato di cin
durante questo ciclo. Se rimuovo lo cin.ignore()
, il loop diventa infinito. Perchè è questo? Cosa posso fare per rendere questo ciclo elegantemente funzionante? Grazie.
utilizza un debugger. –