利用运算符重载,定义类charSub实现两个字符串相减,如"abcd"-"b"="acd"。
时间: 2023-07-05 14:33:24 浏览: 166
字符串类,运算符重载
好的,我可以为你解答这个问题。
首先,我们需要定义一个名为charSub的类,并在其中重载运算符“-”。下面是一个示例代码:
```
#include <iostream>
#include <cstring>
using namespace std;
class charSub {
public:
charSub(const char* str) {
len = strlen(str);
data = new char[len + 1];
strcpy(data, str);
}
charSub operator-(const char* str) const {
charSub result(data);
int len2 = strlen(str);
for (int i = 0; i < len2; i++) {
int pos = 0;
while ((pos = strchr(result.data, str[i])) != NULL) {
int index = pos - result.data;
for (int j = index; j < result.len; j++) {
result.data[j] = result.data[j + 1];
}
result.len--;
}
}
return result;
}
void print() const {
cout << data << endl;
}
private:
char* data;
int len;
};
```
在这个类中,我们定义了一个构造函数,用于初始化字符串;还定义了一个函数,用于重载运算符“-”实现两个字符串相减的操作;最后,定义了一个函数,用于输出字符串。
在operator-函数中,我们首先定义了一个名为result的charSub对象,用于存储结果。然后,我们计算要从字符串中删除的字符,遍历第二个字符串中的每个字符,查找它在第一个字符串中的位置,并从其中删除。最后,返回一个新的charSub对象,其中包含了减去字符后的字符串。
下面是一个使用示例:
```
int main() {
charSub str1("abcd");
charSub str2 = str1 - "b";
str2.print();
return 0;
}
```
在这个示例中,我们创建了一个名为str1的charSub对象,并将其初始化为“abcd”。然后,我们通过运算符重载,计算出从str1中减去“b”后的结果,并将其存储在名为str2的charSub对象中。最后,我们输出了str2中的字符串,即“acd”。
希望这个示例对你有所帮助!
阅读全文