C++ program to compare two Strings using Operator Overloading

Pre-requisite: Operator Overloading in C++

Given two strings, how to check if the two strings are equal or not, using Operator Overloading.

Examples:

Input: ABCD, XYZ
Output: ABCD is not equal to XYZ
        ABCD is greater than XYZ

Input: Geeks, Geeks
Output: Geeks is equal to Geeks

Approach: Using binary operator overloading.

  • Declare a class with a string variable and operator function ‘==’, ‘<=' and '>=’ that accepts an instance of the class and compares it’s variable with the string variable of the current instance.
  • Create two instances of the class and initialize their class variables with the two input strings respectively.
  • Now, use the overloaded operator(==, <= and >=) function to compare the class variable of the two instances.

Below is the implementation of the above approach:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to compare two Strings
// using Operator Overloading
  
#include <cstring>
#include <iostream>
#include <string.h>
  
using namespace std;
  
// Class to implement operator overloading
// function for concatenating the strings
class CompareString {
  
public:
    // Classes object of string
    char str[25];
  
    // Parametrized Constructor
    CompareString(char str1[])
    {
        // Initialize the string to class object
        strcpy(this->str, str1);
    }
  
    // Overloading '==' under a function
    // which returns integer 1/true
    // if left operand string
    // and right operand string are equal.
    //(else return 0/false)
    int operator==(CompareString s2)
    {
        if (strcmp(str, s2.str) == 0)
            return 1;
        else
            return 0;
    }
  
    // Overloading '<=' under a function
    // which returns integer 1/true
    // if left operand string is smaller than
    // or equal to the right operand string.
    // (else return 0/false)
    int operator<=(CompareString s3)
    {
        if (strlen(str) <= strlen(s3.str))
            return 1;
        else
            return 0;
    }
  
    // Overloading '>=' under a function
    // which returns integer 1/true
    // if left operand string is larger than
    // or equal to the right operand string.
    //(else return 0/false)
    int operator>=(CompareString s3)
    {
        if (strlen(str) >= strlen(s3.str))
            return 1;
        else
            return 0;
    }
};
  
void compare(CompareString s1, CompareString s2)
{
  
    if (s1 == s2)
        cout << s1.str << " is equal to "
             << s2.str << endl;
    else {
        cout << s1.str << " is not equal to "
             << s2.str << endl;
        if (s1 >= s2)
            cout << s1.str << " is greater than "
                 << s2.str << endl;
        else
            cout << s2.str << " is greater than "
                 << s1.str << endl;
    }
}
  
// Testcase1
void testcase1()
{
    // Declaring two strings
    char str1[] = "Geeks";
    char str2[] = "ForGeeks";
  
    // Declaring and initializing the class
    // with above two strings
    CompareString s1(str1);
    CompareString s2(str2);
  
    cout << "Comparing \"" << s1.str << "\" and \""
         << s2.str << "\"" << endl;
  
    compare(s1, s2);
}
  
// Testcase2
void testcase2()
{
    // Declaring two strings
    char str1[] = "Geeks";
    char str2[] = "Geeks";
  
    // Declaring and initializing the class
    // with above two strings
    CompareString s1(str1);
    CompareString s2(str2);
  
    cout << "\n\nComparing \"" << s1.str << "\" and \""
         << s2.str << "\"" << endl;
  
    compare(s1, s2);
}
  
// Driver code
int main()
{
    testcase1();
    testcase2();
  
    return 0;
}

chevron_right


Output:

Comparing "Geeks" and "ForGeeks"
Geeks is not equal to ForGeeks
ForGeeks is greater than Geeks


Comparing "Geeks" and "Geeks"
Geeks is equal to Geeks

Rated as one of the most sought after skills in the industry, own the basics of coding with our C++ STL Course and master the very concepts by intense problem-solving.




My Personal Notes arrow_drop_up

Silent achiever

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.