Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ansil en 25 Agosto 2010, 16:02 pm



Título: problema con if
Publicado por: ansil en 25 Agosto 2010, 16:02 pm
tengo un problema de C++ que no se resolver, ya que es lo más básico del mundo y hasta ahora nunca me había fallado ahí  :-\ :huh:

en mi programa hago lo siguiente:

aut=conjuntoAutores;
cad=aut.getNombre();
nom=aut.getNombreMay(cad);
cadena=c_nom;
nomMay=aut.getCadenaMay(cadena); if(nom==nomMay)

siendo c_nom el dato que se le pasa por linea de comandos, y cad el que cogemos del array. y ambas serán pasadas a mayusculas para asegurar una buena comparacion.

el programa funciona correctamente hasta que nom es igual a nomMay en cuyo caso salta directamente al else siguiente, no entrando en el if como debería.

¿Alguien sabe a que se puede deber esto? :-(


Título: Re: problema con if
Publicado por: Kasi en 25 Agosto 2010, 16:15 pm
Podrías usar strcmp (http://www.cplusplus.com/reference/clibrary/cstring/strcmp/).
No recuerdo mucho de C++ pero creo que con eso te comparaba dos cadenas de texto.

Un saludo


Título: Re: problema con if
Publicado por: ansil en 25 Agosto 2010, 16:23 pm
me da este error si intento hacer la comparacion con strcmp:

error: cannot convert ‘std::string’ to ‘const char*’ for argument ‘1’ to ‘int strcmp(const char*, const char*)’


pero gracias de todas formas


Título: Re: problema con if
Publicado por: Littlehorse en 25 Agosto 2010, 16:37 pm
Claro, porque estas usando strings y no char[]. Las cadenas del tipo string pueden compararse sin necesidad de strcmp. Utilizar el miembro  c_str no tendría sentido en este caso.

Si el problema es de lógica, el if-else seria algo así:

Código
  1.    if(str==str2)
  2.       cout<<"iguales"<<endl;
  3.    else
  4.       cout<<"no son iguales"<<endl;

Si el problema es por comportamiento indefinido en tu programa, postea el código completo o una mínima expresión compilable del problema (en caso que el código original sea muy largo), porque con lo posteado es imposible saber de donde proviene el error.

Saludos


Título: Re: problema con if
Publicado por: ansil en 25 Agosto 2010, 17:08 pm
es un codigo demasiado extenso y esa parte depende de 2 clases diferentes como para poder simplificarlo en un pequeño codigo que compile. o yo al menos no soy capaz de hacerlo  :-[, ya que el problema es en el if, pero en ese caso en concreto.  :(


Título: Re: problema con if
Publicado por: Littlehorse en 25 Agosto 2010, 17:27 pm
Entonces no puedo decirte mas que depures el programa revisando los valores de las cadenas relevantes en el error para ver si encuentras por donde puede venir el fallo.

Realmente no se puede saber cual es el error con el código que pusiste. Que devuelven los métodos utilizados? el procesamiento de los datos es correcto? hazte esas preguntas e intenta responderlas.

En principio verifica que contenido tienen las dos cadenas cuando supuestamente deberían ser iguales.

Saludos