No sé si esto se aleja de los que buscáis, pero para validar un número yo uso los streams.
Esto es una función que encontré una vez, que la manoseé para que admitiera la entrada de decimales con coma (vamos, que si se encuentra con una coma la transforma en punto)...pero la idea original no es mía
Código C++:
Ver originalbool validar (std::string& entrada, float& valor)
{
for (size_t i=0; i<entrada.length(); i++)
if (entrada[i]==',')
{
entrada[i]='.';
}
std::stringstream mystream(entrada);
if(mystream >> valor)
{
return true;
}
return false;
}
Y la llamamos así:
Código C++:
Ver originalstd::string entradanumerica;
float Cantidad;
std::cout<<"Introduce cantidad: "<<std::endl;
getline (std::cin,entradanumerica);
while (!validar(entradanumerica,Cantidad))
{
getline (std::cin,entradanumerica);
}