📜  C++程序使用运算符重载比较两个字符串(1)

📅  最后修改于: 2023-12-03 14:39:59.925000             🧑  作者: Mango

C++运算符重载比较两个字符串

在C++中,我们可以使用运算符重载来比较两个字符串。使用运算符重载可以让代码更加简洁易懂,使代码更加高效。

运算符重载

运算符重载就是将原有的运算符重新定义,使之能够适用于自定义类型。C++中常用的运算符重载有+、-、*、/、<<、>>等。

在比较两个字符串时,我们可以使用运算符“==”进行比较操作。通过运算符重载,我们可以让这个操作适用于字符串类型。

字符串类实现

我们可以先定义一个字符串类,然后在该类中重载运算符“==”。

#include <iostream>
#include <cstring>
using namespace std;

class String {
public:
    String(const char* str = "") {
        m_data = new char[strlen(str) + 1];
        strcpy(m_data, str);
    }
    String(const String& other) {
        m_data = new char[strlen(other.m_data) + 1];
        strcpy(m_data, other.m_data);
    }
    ~String() {
        delete[] m_data;
    }
    String& operator=(const String& other) {
        if (this == &other) return *this;
        delete[] m_data;
        m_data = new char[strlen(other.m_data) + 1];
        strcpy(m_data, other.m_data);
        return *this;
    }
    bool operator==(const String& other) const {
        return strcmp(m_data, other.m_data) == 0;
    }
private:
    char* m_data;
};

在上述代码中,我们定义了一个字符串类String,该类有一个成员变量m_data,存储字符串的内容。定义了默认构造函数、复制构造函数、析构函数和赋值运算符。同时,我们在该类中重载了运算符“==”,以实现字符串的比较。

示例

我们可以使用该字符串类进行字符串的比较。下面的代码展示了一个简单的示例。

#include <iostream>
using namespace std;

int main() {
    String str1 = "hello";
    String str2 = "world";
    String str3 = "hello";

    if (str1 == str2) {
        cout << "str1 is equal to str2" << endl;
    } else {
        cout << "str1 is not equal to str2" << endl;
    }

    if (str1 == str3) {
        cout << "str1 is equal to str3" << endl;
    } else {
        cout << "str1 is not equal to str3" << endl;
    }

    return 0;
}

输出结果为:

str1 is not equal to str2
str1 is equal to str3
总结

通过运算符重载,我们可以让代码更加简洁易懂,使代码更加高效。在实现字符串比较时,通过重载运算符“==”,可以轻松实现字符串的比较操作。