std::string::compare() en C++

compare() es una función de miembro público de la clase de string. Compara el valor del objeto de string (o una substring) con la secuencia de caracteres especificada por sus argumentos. 
El compare() puede procesar más de un argumento para cada string para que uno pueda especificar una substring por su índice y por su longitud.
Tipo de devolución: compare() devuelve un valor entero en lugar de un valor booleano.
Diferentes sintaxis para string::compare() : 

  • Sintaxis 1: Compara la string *this con la string str.
int string::compare (const string& str) const
Returns:
0 : if both strings are equal.
A value < 0 : if *this is shorter than str or,
first character that doesn't match is smaller than str.
A value > 0 : if *this is longer than str or,
first character that doesn't match is greater

CPP

// CPP code for demonstrating
// string::compare (const string& str) const
 
#include<iostream>
using namespace std;
 
void compareOperation(string s1, string s2)
{
    // returns a value < 0 (s1 is smaller than s2)
    if((s1.compare(s2)) < 0)
        cout << s1 << " is smaller than " << s2 << endl;
 
    // returns 0(s1, is being compared to itself)
    if((s1.compare(s1)) == 0)
        cout << s1 << " is equal to " << s1 << endl;
    else
        cout << "Strings didn't match ";
     
}
 
// Driver Code
int main()
{
    string s1("Geeks");
    string s2("forGeeks");
    compareOperation(s1, s2);
     
    return 0;
}

Producción: 

Geeks is smaller than forGeeks
Geeks is equal to Geeks
  • Sintaxis 2: compara como máximo, len caracteres de la string *this, comenzando con el índice idx con la string str.
int string::compare (size_type idx, size_type len, const string& str) const
Throws out_of_range if index > size().

CPP

// CPP code to demonstrate
// int string::compare (size_type idx, size_type len,
// const string& str) const
 
#include<iostream>
using namespace std;
 
void compareOperation(string s1, string s2)
{
    // Compares 5 characters from index number 3 of s2 with s1
    if((s2.compare(3, 5, s1)) == 0)
        cout << "Here, "<< s1 << " are " << s2;
 
    else
        cout << "Strings didn't match ";
}
// Driver Code
int main()
{
    string s1("Geeks");
    string s2("forGeeks");
    compareOperation(s1, s2);
      
  return 0;
}

Producción: 

Here, Geeks are forGeeks
  • Sintaxis 3: Compara como máximo, len caracteres de la string *este que comienza con el índice idx con, como máximo, str_len caracteres de la string str que comienza con el índice str_idx.
int string::compare (size_type idx, size_type len, const string& 
str, size_type str_idx, size_type str_len) const
Throws out_of_range if idx > size().
Throws out_of_range if str_idx > str.size().

CPP

// CPP code to demonstrate
// int string::compare (size_type idx, size_type len, const string&
// str, size_type str_idx, size_type str_len) const
 
#include<iostream>
using namespace std;
 
void compareOperation(string s1, string s2)
{
    // Compares 5 characters from index number 0 of s1 with
    // 5 characters from index 3 of s2
    if((s1.compare(0, 5, s2, 3, 5)) == 0)
        cout << "Welcome to " << s1 << s2 << " World";
 
    else
        cout << "Strings didn't match ";
}
// Driver Code
int main()
{
    string s1("Geeks");
    string s2("forGeeks");
    compareOperation(s1, s2);
      
  return 0;
}

Producción: 

Welcome, to GeeksforGeeks World
  • Sintaxis 4: Compara los caracteres de la string *this con los caracteres de la string C cstr. 
int string::compare (const char* cstr) const

CPP

// CPP code to demonstrate
// int string::compare (const char* cstr) const
 
#include<iostream>
using namespace std;
 
void compareOperation(string s1, string s2)
{
    // returns < 0 (s1 < "GeeksforGeeks")
    if((s1.compare("GeeksforGeeks")) < 0)
        cout << s1 << " is smaller than string " << "GeeksforGeeks";
 
    //returns 0 (s2 is "forgeeks")
    if((s2.compare("forGeeks")) == 0)
        cout << endl << s2 << " is equal to string " << s2;
 
    else
        cout << "Strings didn't match ";
     
}
// Driver Code
int main()
{
    string s1("Geeks");
    string s2("forGeeks");
    compareOperation(s1, s2);
      
  return 0;
}

Producción: 

Geeks is smaller than string GeeksforGeeks
forGeeks is equal to string forGeeks
  • Sintaxis 5: Compara como máximo, len caracteres de la string *this, comenzando con el índice idx con todos los caracteres de la string C cstr.
int string::compare (size_type idx, size_type len, const char* cstr) const

Tenga en cuenta que cstr puede no ser un puntero nulo (NULL).

CPP

// CPP code to demonstrate
// int string::compare (size_type idx, size_type len,
// const char* cstr) const
#include<iostream>
using namespace std;
 
void compareOperation(string s1)
{
    // Compares 5 characters from 0 index of s1 with "Geeks"
    if((s1.compare(0, 5, "Geeks")) == 0)
        cout << s1 << " are " << "awesome people";
     
    else
        cout << "Strings didn't match ";
  
}
 
// Driver Code
int main()
{
    string s1("Geeks");
    compareOperation(s1);
      
  return 0;
}

Producción: 

Geeks are awesome people
  • Sintaxis 6: Compara, como máximo, len caracteres de la string *this, comenzando con el índice idx con chars_len caracteres de la array de caracteres chars. 
int string::compare (size_type idx, size_type len, const char* chars, 
size_type chars_len)const

Tenga en cuenta que los caracteres deben tener al menos caracteres chars_len. Los caracteres pueden tener valores arbitrarios. Por lo tanto, ‘\0’ no tiene un significado especial.

CPP

// CPP code to demonstrate
// int string::compare (size_type idx, size_type len,
// const char* chars, size_type chars_len)const
 
#include<iostream>
using namespace std;
 
void compareOperation(string s1, string s2)
{
    // Compares 5 characters from 0 index of s1 with
    // 5 characters of string "Geeks"
    if((s1.compare(0, 5, "Geeks", 5)) == 0)
        cout << "This is " << s1 <<  s2 ;
  
    else
        cout << "Strings didn't match ";
}
 
// Driver Code
int main()
{
    string s1("Geeks");
    string s2("forGeeks");
    compareOperation(s1, s2);
      
  return 0;
}

Producción: 

This is GeeksforGeeks

Este artículo es una contribución de Sakshi Tiwari . Si te gusta GeeksforGeeks (¡sabemos que te gusta!) y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@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 *