📅  最后修改于: 2023-12-03 15:13:45.781000             🧑  作者: Mango
在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+
函数中,我们首先计算了两个字符串的长度,然后创建一个新的字符数组来存储连接后的字符串。最后,我们使用 strcpy
和 strcat
函数将两个字符串拷贝到新的字符数组中,并创建一个新的 MyString 对象返回。
在主函数中,我们创建了两个 MyString 对象 str1 和 str2 分别初始化为 "Hello" 和 "World"。然后,我们使用 +
运算符将它们连接起来,并将结果保存在 str3 中。最后,我们使用 getStr
函数获取 str3 的字符串表示,并输出到控制台。
该程序的输出结果为:
Result: HelloWorld
使用运算符重载来连接字符串可以使代码更加简洁和直观。通过在类中定义合适的运算符重载函数,我们可以像操作基本数据类型一样操作自定义的类型,增强了代码的可读性和可维护性。