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() :
- Syntax 1: Compares the string *this with the 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 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
- Syntax 2: Compares at most, len characters of string *this, starting with index idx with the string str.
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& 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
- Syntax 3: Compares at most, len characters of string *this starting with index idx with at most, str_len characters of string str starting with index 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 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;
} |
Output:
Welcome, to GeeksforGeeks World
- Syntax 4: Compares the characters of string *this with the characters of the C-string cstr.
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
- Syntax 5: Compares at most, len characters of string *this, starting with index idx with all characters of the C-string cstr.
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
- Syntax 6: Compares, at most, len characters of string *this, starting with index idx with chars_len characters of the character array chars.
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.