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:
C++
// 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];
// Parameterized 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;
} |
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