Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema usando strlen en funcion

Estas en el tema de problema usando strlen en funcion en el foro de C/C++ en Foros del Web. pues este codigo ,al compilar me da el error de abajo #include<iostream> #include<iomanip> #include<conio.h> #include <string.h> using namespace std; int numerico( string a); int main ...
  #1 (permalink)  
Antiguo 11/08/2009, 10:43
 
Fecha de Ingreso: agosto-2009
Mensajes: 7
Antigüedad: 14 años, 9 meses
Puntos: 0
problema usando strlen en funcion

pues este codigo ,al compilar me da el error de abajo

#include<iostream>
#include<iomanip>
#include<conio.h>
#include <string.h>
using namespace std;


int numerico( string a);

int main (void)
{

char cadena[256];
long longitud=0;

std::cout<<"introduce cadena "<<endl;
std::cin>>cadena;


getch();

}


int numerico(string a)
{
long longitud=0;


longitud=strlen(a);

cout<<" la cadena es "<<a<<endl;
cout<<" la longitud es "<<longitud<<endl;

}

30 C:\Documents and Settings\Administrador\Escritorio\4.cpp no matching function for call to `strlen(std::string&)'


en cambio si lo paso a la funcion principal la parte del tamaño de la cadena me lo acepta

por que es eso???? gracias

y por cierto, ya que pongo un post...podria alguien decirme como controlar que los caracteres de una cadena sean numerico??
algo como

if(!isint(a[i])) bandera=0;

la verdad es que llevo un rato buscando la funcion para comprobar el tipo de los elemento de una cadena y no consigo encontrarla...esa debe ser de otro lenguaje `porque el compilador se me cuelga

Última edición por horof; 11/08/2009 a las 11:01 Razón: una preguntilla mas.........
  #2 (permalink)  
Antiguo 11/08/2009, 11:22
 
Fecha de Ingreso: febrero-2004
Ubicación: Buenos Aires
Mensajes: 60
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: problema usando strlen en funcion

La funcion strlen es para arrays de caracteres;
si declaras la funcion como int numerico(char *a) te deberia andar bien, otra opción es usar la función size de la clase string que te da la longitud de la cadena en ese caso deberias poner a.size().
  #3 (permalink)  
Antiguo 11/08/2009, 12:56
Avatar de Anubis_Slash  
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 15 años
Puntos: 5
Respuesta: problema usando strlen en funcion

hola horof

para sacar el numero de la cadena te recomiendo usar el length, quedaria algo asi:

longitud=a.length();

y para validar solamente numero seria asi:

if( isnum(valor) )
cout<<"numero";
else
.......


saludos
  #4 (permalink)  
Antiguo 12/08/2009, 02:43
 
Fecha de Ingreso: agosto-2009
Mensajes: 7
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: problema usando strlen en funcion

muchas gracias a todos. Voy a seguir con mi pequeño intento de aprender c++!!
sin vosotros estaria listo!!!
  #5 (permalink)  
Antiguo 12/08/2009, 11:12
 
Fecha de Ingreso: agosto-2009
Mensajes: 7
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: problema usando strlen en funcion

siento molestar de nuevo......no me funciona isnum, el compilador me dice que no conoce la funcion y yo buscando por la web no encuntro a que libreria pertenece.
tengo estas en el programa.....y estoy usando el dev-c++ 49.9.2
#include<iostream>
#include<iomanip>
#include<conio.h>
#include <string.h>
me podriais decir un buen enlace donde mirar las librerias y funciones? y la libreria de is num?
abucharado y avergonzado me despido, un saludo


editando: parece que he resuelto mi problema de reconocimineto de la cadena con
if(atoi(cadena))
cout<<" la cadena es un numero "<<endl;

pero me molaria saber donde anda isnum ,como me aconsejo Anubis_Slash ....sobre todo por saber ya buscarme las librerias y dar menos la vara

Última edición por horof; 12/08/2009 a las 11:25 Razón: info extra
  #6 (permalink)  
Antiguo 12/08/2009, 13:55
Avatar de Anubis_Slash  
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 15 años
Puntos: 5
Respuesta: problema usando strlen en funcion

hola horof

mira este link:

http://www.cplusplus.com/reference/clibrary/

te lo recomiendo como una pagina basica para aprender.




saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:56.