problema con if

Iniciado por ansil, 25 Agosto 2010, 16:02 PM

0 Miembros y 1 Visitante están viendo este tema.

ansil

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? :-(

Kasi

Podrías usar strcmp.
No recuerdo mucho de C++ pero creo que con eso te comparaba dos cadenas de texto.

Un saludo

ansil

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

Littlehorse

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 (cpp) [Seleccionar]
    if(str==str2)
       cout<<"iguales"<<endl;
    else
       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
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

ansil

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.  :(

Littlehorse

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
An expert is a man who has made all the mistakes which can be made, in a very narrow field.