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

📅  最后修改于: 2023-12-03 15:13:45.781000             🧑  作者: Mango

C++程序使用运算符重载连接两个字符串

在C++中,我们经常需要连接两个字符串。C++中可以使用运算符重载来实现字符串的连接操作,使得代码更加简洁和易读。下面是一个示例程序,展示了如何使用运算符重载连接两个字符串。

#include <iostream>
#include <cstring>

class MyString {
private:
    char* str;
public:
    MyString(const char* s = nullptr) {
        if (s == nullptr) {
            str = new char[1];
            str[0] = '\0';
        } else {
            int len = strlen(s);
            str = new char[len + 1];
            strcpy(str, s);
        }
    }

    MyString(const MyString& other) {
        int len = strlen(other.str);
        str = new char[len + 1];
        strcpy(str, other.str);
    }

    ~MyString() {
        delete[] str;
    }

    MyString operator+(const MyString& other) {
        int len1 = strlen(str);
        int len2 = strlen(other.str);
        char* newStr = new char[len1 + len2 + 1];
        strcpy(newStr, str);
        strcat(newStr, other.str);
        MyString result(newStr);
        delete[] newStr;
        return result;
    }

    const char* getStr() const {
        return str;
    }
};

int main() {
    MyString str1 = "Hello";
    MyString str2 = "World";
    MyString str3 = str1 + str2;
    std::cout << "Result: " << str3.getStr() << std::endl;
    return 0;
}

在上面的程序中,我们定义了一个 MyString 类来表示字符串。在类中,我们重载了 + 运算符,使其能够连接两个 MyString 对象。在 operator+ 函数中,我们首先计算了两个字符串的长度,然后创建一个新的字符数组来存储连接后的字符串。最后,我们使用 strcpystrcat 函数将两个字符串拷贝到新的字符数组中,并创建一个新的 MyString 对象返回。

在主函数中,我们创建了两个 MyString 对象 str1 和 str2 分别初始化为 "Hello" 和 "World"。然后,我们使用 + 运算符将它们连接起来,并将结果保存在 str3 中。最后,我们使用 getStr 函数获取 str3 的字符串表示,并输出到控制台。

该程序的输出结果为:

Result: HelloWorld

使用运算符重载来连接字符串可以使代码更加简洁和直观。通过在类中定义合适的运算符重载函数,我们可以像操作基本数据类型一样操作自定义的类型,增强了代码的可读性和可维护性。