Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: CoLSoN2 en 01 de Abril de 2005, 05:48:30 PM

Título: Convertir Std::string A Int Y Float
Publicado por: CoLSoN2 en 01 de Abril de 2005, 05:48:30 PM
 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 :\
Título: Convertir Std::string A Int Y Float
Publicado por: Pogacha en 01 de Abril de 2005, 06:37:59 PM
 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
Título: Convertir Std::string A Int Y Float
Publicado por: Mars Attacks en 01 de Abril de 2005, 07:59:52 PM
 Baja al nivel de código ascii de caracter del string y a mamar.
Título: Convertir Std::string A Int Y Float
Publicado por: _Grey en 01 de Abril de 2005, 08:30:26 PM
 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.
Título: Convertir Std::string A Int Y Float
Publicado por: gdl en 01 de Abril de 2005, 08:37:31 PM
 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.
Título: Convertir Std::string A Int Y Float
Publicado por: zupervaca en 02 de Abril de 2005, 09:41:10 AM
 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.asp

saludos
Título: Convertir Std::string A Int Y Float
Publicado por: CoLSoN2 en 02 de Abril de 2005, 02:18:53 PM
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 :)