Open In App

Difference between Relational operator(==) and std::string::compare() in C++

Improve
Improve
Like Article
Like
Save
Share
Report

Relational operators vs std::string::compare()

  1. Return Value: Relational operators return boolean value, while compare() returns unsigned integer.
  2. Parameters : Relational operators need only two strings to perform comparison, one which is being compared and other one is for reference, while compare() can accept different arguments to perform certain task accordingly.
  3. Comparison Method : Relational operators compare characters lexicographically according to the current character traits, while compare() can process more than one argument for each string so that you can specify a substring by its index and by its length.
  4. Operation : We can perform comparison in a part of string directly, using compare() which is otherwise quite a long process with relational operators. Example : * Compare 3 characters from 3rd position of str1 with 3 characters from 4th position of str2.
* str1 = "GeeksforGeeks"
* str2 = "HelloWorld!"
  1. Using compare() : 

CPP




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


  1. Output:
Not equal
  1. Using Relational Operators : 

CPP




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


  1. Output:
Not equal
  1. We can clearly observe the extra processing we need to go through while using relational operators.

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.



Last Updated : 08 Nov, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads