Diferencia entre el operador relacional (==) y std::string::compare() en C++

Comparando strings usando operadores relacionales , usando compare()

Operadores relacionales vs std::string::compare()

  1. Valor devuelto: los operadores relacionales devuelven un valor booleano, mientras que compare() devuelve un entero sin signo.
  2. Parámetros: los operadores relacionales solo necesitan dos strings para realizar la comparación, una que se compara y otra como referencia, mientras que compare() puede aceptar diferentes argumentos para realizar ciertas tareas en consecuencia.
  3. Método de comparación: los operadores relacionales comparan los caracteres lexicográficamente de acuerdo con los rasgos de carácter actuales, mientras que compare() puede procesar más de un argumento para cada string para que pueda especificar una substring por su índice y por su longitud.
  4. Operación: podemos realizar una comparación en una parte de la string directamente, usando compare(), que por lo demás es un proceso bastante largo con operadores relacionales.
    Ejemplo: * Compare 3 caracteres de la 3.ª posición de str1 con 3 caracteres de la 4.ª posición de str2.
    * str1 = "GeeksforGeeks"
    * str2 = "HelloWorld!"

    Usando comparar() :

    // CPP code to perform comparison using compare()
    #include <iostream>
    using namespace std;
      
    void usingCompare(string str1, string str2)
    {
        // Direct Comparison
        if (str1.compare(2, 3, str2, 3, 3) == 0)
            cout << "Both are same";
        else
            cout << "Not equal";
    }
      
    // Main function
    int main()
    {
        string s1("GeeksforGeeks");
        string s2("HelloWorld !");
        usingCompare(s1, s2);
      
        return 0;
    }

    Producción:

    Not equal
    

    Uso de operadores relacionales:

    // CPP code for comparison using relational operator
    #include <iostream>
    using namespace std;
      
    void relational_operation(string s1, string s2)
    {
        int i, j;
      
        // Lexicographic comparison
        for (i = 2, j = 3; i <= 5 && j <= 6; i++, j++) {
            if (s1[i] != s2[j])
                break;
        }
        if (i == 6 && j == 7)
            cout << "Equal";
        else
            cout << "Not equal";
    }
      
    // Main function
    int main()
    {
        string s1("GeeksforGeeks");
        string s2("HelloWorld !");
        relational_operation(s1, s2);
      
        return 0;
    }

    Producción:

    Not equal
    

    Podemos observar claramente el procesamiento adicional por el que debemos pasar al usar operadores relacionales.

Este artículo es una contribución de Sakshi Tiwari . Si le gusta GeeksforGeeks (¡sabemos que le gusta!) y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *