Hola daniel como estas mira hace rato que no programo en c/c++ mas en modo consola como el codigo que estas mostrando tenia un sistemita hecho del tipo windows form y yo validaba que el ingreso de datos en ciertos campos sea solo numeros y nada mas. Lo hacia asi
void __fastcall TAltas::EditEdadKeyPress(TObject *Sender, char &Key)
{
if (Key == 13) //esto es si se presiona ENTER el valor 13 representa al ENTER en ascii
{ DTFecNac->SetFocus(); }
else
{
//aca hace esto si presionas alguna tecla que no sea numerica no escribe nada o no hace nada
//y el otro el Key != 8 es para que puedas borrar con la tecla backspace
if(Key !=8 && Key < '0' || Key > '9')
{ Key = 0;}
}
}
Fijate que yo lo hago en el evento on keypress de un textbox disculpa pero no me acuerdo mucho de modo consola te lo paso porque por ahy te sirve y lo extrapolas a tu problema.
Espero te sirva un saludo.