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;
}