Parece mentira pero no consigo encontrar una forma decente de convertir un string a int y float
Están atoi y atof (para c-strings, pero bueno) pero dicen que si no pueden convertir el numero devuelven 0. ¿Entonces cómo diferencio entre "0" y "ASD" ?
Luego está stringstream, con lo que podría hacer
stringstream s;
s << cadena;
s >> entero;
Es lo que uso ahora, pero cuando meto "ASD" hace cosas raras y parece que la variable se corrompe o algo, porque ya no va bien desde que hago eso (hablo de la variable entera).
¿Es que no hay ninguna forma segura de convertir un string a una varaible numérica?
Lo ideal sería lo que hace stringstream pero lanzando una excepción si no es posible, o si string tuviera un método ::isNumeric() o ::isConvertibleTo*() o algo así.. C# me tiene mal acostumbrado :\
Es para un parser o para que?
Yo no conozco ninguna libreria liviana para esto pero no es dificil de hacer la comprobación de gramatica. Ademas puedes heredar estas clases y agregar estos metodos.
Saludos
Baja al nivel de código ascii de caracter del string y a mamar.
Podrias hacer una pequeña funcion que compruebe si el primer caracter es un numero o un signo + o -, para comprobar si es un numero o un texto.
Saludos.
Usa strtol() o strtoul() que te dicen cuál fue el primer caracter que no "encajó" en el formato del número. Además, te permite leer números del estilo hexadecimal "0x3F" creo recordar.
si lo vas a hacer multiplataforma y quieres saber seguro si es numero, caracter o lo que sea usa estas funciones standard de c
http://msdn.microsoft.com/library/default....ssification.aspsaludos
Cita de: gdlUsa strtol() o strtoul() que te dicen cuál fue el primer caracter que no "encajó" en el formato del número. Además, te permite leer números del estilo hexadecimal "0x3F" creo recordar.
Justo lo que necesitaba :)