Tengo un problema con un programa en el que estoy trabajando en C++. Le estoy pidiendo al usuario que ingrese un número válido. Lo tomo como una cadena porque la tarea particular que estoy haciendo, hace que sea más fácil a largo plazo. Para la verificación de errores básicos, quiero verificar si el número ingresado es un número válido. Ejemplo:¿Cómo puedo verificar si un número (tipo doble) almacenado como una cadena es un número doble válido en C++?
Enter number: 3.14
This would be valid
Enter number: 3.1456.365.12
This shouldn't be valid
sí, va a lanzar una excepción 'bad_lexical_cast' si no se puede convertir con éxito. Así que asegúrate de llamarlo siempre en un try/catch. –
boost :: lexical_cast se basa en std :: istringstream por lo que no detectará entradas mal formadas del tipo "3.14.15". – Manuel
@Manuel: en realidad sí. También comprueba que la cadena * completa * se haya convertido correctamente. (Sí, stringstream también lo permite). No estoy seguro, si ese comportamiento es costumizable (uno no necesita ese control siempre) ... – UncleBens