Programación General => C/C++ => Mensaje iniciado por: ngb en Jueves 3 de Agosto de 2006, 12:27
Título: Reconocer Numeros En String
Publicado por: ngb en Jueves 3 de Agosto de 2006, 12:27
Buenas a todos, sabeis como puedo reconocer en C++ si el contenido de un string es numerico? por ejemplo "2", "25". Me suena una funcion isdigit() o algo asi pero no se como es.
La necesito para reconocer si el string es un valor numerico para pasarlo a int en la entrada de la vista de un programa. La paso a int con stringstream(entero) >> string; pero necesito estar seguro de que el contenido del string es un numero.
Alguien sabe como es isdigit() o alguna que me sirva
Gracias de antemano
Título: Re: Reconocer Numeros En String
Publicado por: Diodo en Jueves 3 de Agosto de 2006, 12:53
Título: Re: Reconocer Numeros En String
Publicado por: Geo en Jueves 3 de Agosto de 2006, 16:42
Sólo faltaría aclarar a qué te refieres con valor "numérico", puedes tener números con punto decimal, o que incluyan signo ('-' ó '+'), o incluso que utilicen notación exponencial ('e'). No conozco una función/clase en el C++ estándar que permita saber esto (a ver si alguien comenta al respecto :)).
Ahora, si lo que buscas es saber si un string contiene sólo números (es decir, si string es un número entero sin signo), puedes probar con esto:
Código: Text
bool isNum( const string& s ) {
for ( int i = 0; i < s.length(); i++ ) {
if ( isdigit( s[ i ] ) == 0 ) {
return false;
}
}
return true;
}
Saludos, JJ (Geo).
Título: Re: Reconocer Numeros En String
Publicado por: ngb en Jueves 3 de Agosto de 2006, 21:52
gracias a los 2.
Si era eso lo k queria aunque al final no me hizo falta isdigit porque directamente al convertir a int un string con caracteres no numericos, p.ej una palabra, la funcion de conversion stringstream de <sstream> no casca y luego como es un valor fuera de rango no la acepta asi k tuve suerte y no me hace falta ver con anterioridad si es digito. Muchas gracias en cualquier caso.