¿Cómo comparar dos strings en C++?

publicado por: Anonymous

Estoy realizado un programa estilo menú en el cual, la primera opción es “Añadir ciudad”. El programa pide “Ingresa el nombre de la ciudad, pulsa 0 si no quieres añadir más: “. Mi problema viene aquí, no se como comparar la cadena de caracteres introducida con el número 0 para indicar que no quiero introducir más ciudades.

He probado con strcmp y su correspondiente librería stdio.h y string.h, pero me salta error. No se si es que lo estoy escribiendo mal o directamente no se hace así. El trozo de código al que me refiero es este:

if (strcmp(nombreCiudad, 0) == 0) {
    finalizar();
} else {
    seguirPidiendoNombres();
}

solución

¿Cómo comparar la cadena de caracteres introducida con el número 0 para indicar que no quiero introducir más ciudades?

Si estás guardando los datos en un std::string, basta con comparar con la cadena de caracteres "0":

int main() {
    std::string ciudad;

    while (std::getline(std::cin, ciudad)) {
        if (ciudad == "0") // Es cero?
            return 0;  // Salir!

        std::cout << "La ciudad " << ciudad << " es muy bonitan";
    }

    return 0;
}

Puedes ver el código funcionando en TIO.

Otras cosas a tener en cuenta.

La función strcmp pertenece a las librerías de y se usa para comparar formaciones1 de caracteres. Si estás programando en deberías usar la cabecera <string> para trabajar con objetos de cadena de caracteres.


1También conocidas como arreglos o en inglés arrays.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *