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() :
- 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
// 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
// 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
// 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
// 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
// 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
// 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
This article is contributed by Sakshi Tiwari. 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. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Please Login to comment...