Open In App

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

compare() is a public member function of string class. It compares the value of the string object (or a substring) to the sequence of characters specified by its arguments. 
The compare() can process more than one argument for each string so that one can specify a substring by its index and by its length.
Return type : compare() returns an integer value rather than a Boolean value.
Different Syntaxes for string::compare() : 

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 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;
}

Output: 

Geeks is smaller than forGeeks
Geeks is equal to Geeks
int string::compare (size_type idx, size_type len, const string& str) const
Throws out_of_range if index > size().




// CPP code to demonstrate
// int string::compare (size_type idx, size_type len,
// const string&amp; 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;
}

Output: 

Here, Geeks are forGeeks
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 code to demonstrate
// int string::compare (size_type idx, size_type len, const string&amp;
// 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;
}

Output: 

Welcome, to GeeksforGeeks World
int string::compare (const char* cstr) const




// 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;
}

Output: 

Geeks is smaller than string GeeksforGeeks
forGeeks is equal to string forGeeks
int string::compare (size_type idx, size_type len, const char* cstr) const

Note that cstr may not be a null pointer (NULL).




// 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;
}

Output: 

Geeks are awesome people
int string::compare (size_type idx, size_type len, const char* chars, 
size_type chars_len)const

Note that chars must have at least chars_len characters. The characters may have arbitrary values. Thus, ‘\0’ has no special meaning.




// 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;
}

Output: 

This is GeeksforGeeks

If you like GeeksforGeeks (We know you do!) and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org.


Article Tags :
C++