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
时间: 2023-08-20 12:24:53 浏览: 119
以下是实现代码:
```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;
}
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& s, int n) { // +重载
char* temp = new char[strlen(s.array) + n + 1];
strcpy(temp, s.array);
for(int i = 0; i < n; i++) {
temp[strlen(s.array) + i] = '0' + n;
}
temp[strlen(s.array) + n] = '\0';
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
```
阅读全文