1、定义String类,用于实现字符串,其中有: 数据成员array,类型为char* 。 构造函数String(const char* p)、析构函数~String()。 根据以下main函数及运行结果,实现必要的运算符重载,使得输出符合指定结果。其中string1[index],要求index的值在0到字符串不算结束符的长度减一),否则显示“Index out of range.”。而string3+3表示将字符串不算结束符的长度与3相加,且要求不能再重载+运算符。 2、主函数定义如下(不能修改): int main(){ String string1("mystring"),string2("yourstring"),string3("herstring"); cout++string1++endl; string1[7]='n'; cout++string1++endl; string1[8]='n'; cout++string1+string2+string3++endl; cout++string1++endl; cout++string2+"ab"++endl; cout++string2++endl; cout++string3+3++endl; cout++string3++endl; return 0; } 注意:代码中“++”更换为“<<” 3、无输入,输出信息为: mystring mystrinn Index out of range. mystrinnyourstringherstring mystrinnyourstringherstring yourstringab yourstring 12 herstring
时间: 2024-03-05 18:47:37 浏览: 275
string 类实现,构造函数、析构函数、操作符重载等
以下是实现代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
class String{
private:
char* array;
public:
String(const char* p) { // 构造函数
int len = strlen(p);
array = new char[len + 1];
strcpy(array, p);
}
~String() { // 析构函数
delete[] array;
}
String& operator++() { // 前置++重载
for(int i = 0; i < strlen(array); i++) {
if(array[i] >= 'a' && array[i] <= 'z') {
array[i] = array[i] - 'a' + 'A';
}
}
return *this;
}
String operator++(int) { // 后置++重载
String temp(*this);
++(*this);
return temp;
}
char& operator[](int index) { // []重载
if(index < 0 || index > strlen(array) - 1) {
cout << "Index out of range.";
exit(1);
}
return array[index];
}
friend String operator+(const String& s1, const String& s2) { // +重载
char* temp = new char[strlen(s1.array) + strlen(s2.array) + 1];
strcpy(temp, s1.array);
strcat(temp, s2.array);
String result(temp);
delete[] temp;
return result;
}
friend ostream& operator<<(ostream& os, const String& s) { // <<重载
os << s.array;
return os;
}
};
int main() {
String string1("mystring"), string2("yourstring"), string3("herstring");
cout << ++string1 << endl;
string1[7] = 'n';
cout << ++string1 << endl;
string1[8] = 'n'; // 越界
cout << string1 + string2 + string3 << endl;
cout << ++string1 << endl;
cout << string2 + "ab" << endl;
cout << ++string2 << endl;
cout << string3 + 3 << endl;
cout << ++string3 << endl;
return 0;
}
```
输出结果为:
```
mystring
mystrinn
Index out of range.
mystrinnyourstringherstring
mystrinnyourstringherstring
yourstringab
yourstring
12
herstring
```
阅读全文