isdigit() controlla che un singolo carattere sia un numero.
Quindi 'a' non viene considerato un numero.
Non ho capito di che tipo hai dichiarato n, se ad esempio n vale 1234, ed è un int, viene controllato solo il primo byte.E c'è un overflow numerico, "1234" è un insieme di caratteri non un singolo carattere."1234" come stringa è diversa da 1234 come numero.
Io il tuo problema l' avrei risolto così:
codice:#include <iostream> #include <cstdlib> using namespace std; int main(int argc, char** argv) { string n; do { cin >> n; // Eventualmente stampa l' errore }while(atoi(&n[0])<2); return 0; }

Rispondi quotando