Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Convertir Std::string A Int Y Float

Iniciado por CoLSoN2, 01 de Abril de 2005, 05:48:30 PM

« anterior - próximo »

CoLSoN2

 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 :\
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Pogacha

 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

Mars Attacks

 Baja al nivel de código ascii de caracter del string y a mamar.

_Grey

 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.

gdl

 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.

zupervaca

 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

CoLSoN2

Cita de: "gdl"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.
Justo lo que necesitaba :)
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.