使用c++请定义一个 MyString 类,提供一些常见的字符串操作方法,例如字符串拼接、判断字符串相等、截取子字符串、获取字符串长度以及显示字符串等。这些方法可以通过重载运算符和调用 string 类的成员函数来实现。在 main 函数中,创建了几个 MyString 对象并进行了一些操作,请编程实现MyString类,使得下面main测试程序能得到正确结果。 int main() { MyString s1("Hello"); MyString s2(" World"); MyString s3 = s1 + s2; // 拼接字符串 s3.print(); if (s1 == s2) { // 判断字符串相等 cout << "s1 equals to s2" << endl; } else { cout << "s1 is not equal to s2" << endl; } MyString sub = s3.substring(6, 5); // 截取子字符串 sub.print(); //显示字符串 cout << "Length of s3: " << s3.length() << endl; // 字符串长度 return 0; }
时间: 2024-01-21 07:03:02 浏览: 86
C++实现的String字符串类
4星 · 用户满意度95%
好的,这里是一个可能的实现:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
class MyString {
public:
MyString() : str(nullptr), len(0) {} // 默认构造函数
MyString(const char* s) { // 带参构造函数
len = strlen(s);
str = new char[len + 1];
strcpy(str, s);
}
MyString(const MyString& other) { // 拷贝构造函数
len = other.len;
str = new char[len + 1];
strcpy(str, other.str);
}
~MyString() { // 析构函数
delete[] str;
}
MyString operator+(const MyString& other) const { // 拼接字符串
MyString result;
result.len = len + other.len;
result.str = new char[result.len + 1];
strcpy(result.str, str);
strcat(result.str, other.str);
return result;
}
bool operator==(const MyString& other) const { // 判断字符串相等
if (len != other.len) {
return false;
}
return strcmp(str, other.str) == 0;
}
MyString substring(int start, int len) const { // 截取子字符串
MyString result;
if (start >= 0 && start < this->len && len > 0) {
int end = min(start + len, this->len);
result.len = end - start;
result.str = new char[result.len + 1];
strncpy(result.str, str + start, result.len);
result.str[result.len] = '\0';
}
return result;
}
int length() const { // 获取字符串长度
return len;
}
void print() const { // 显示字符串
cout << str << endl;
}
private:
char* str;
int len;
};
int main() {
MyString s1("Hello");
MyString s2(" World");
MyString s3 = s1 + s2; // 拼接字符串
s3.print();
if (s1 == s2) { // 判断字符串相等
cout << "s1 equals to s2" << endl;
} else {
cout << "s1 is not equal to s2" << endl;
}
MyString sub = s3.substring(6, 5); // 截取子字符串
sub.print(); // 显示字符串
cout << "Length of s3: " << s3.length() << endl; // 字符串长度
return 0;
}
```
输出结果应该为:
```
Hello World
s1 is not equal to s2
World
Length of s3: 11
```
阅读全文