• Lunes 18 de Noviembre de 2024, 15:58

Autor Tema:  Reconocer Numeros En String  (Leído 2085 veces)

ngb

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Reconocer Numeros En String
« en: Jueves 3 de Agosto de 2006, 12:27 »
0
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


Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Reconocer Numeros En String
« Respuesta #2 en: Jueves 3 de Agosto de 2006, 16:42 »
0
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
  1.  
  2. bool isNum( const string& s ) {
  3.   for ( int i = 0; i < s.length(); i++ ) {
  4.     if ( isdigit( s[ i ] ) == 0 ) {
  5.       return false;
  6.     }
  7.   }
  8.   return true;
  9. }
  10.  
  11.  

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

ngb

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Reconocer Numeros En String
« Respuesta #3 en: Jueves 3 de Agosto de 2006, 21:52 »
0
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.

Ahora planteo otra duda en otro hilo:P