c/c++:设计一个字符串类(Mystring),除具有一般的输入输出字符串的功能外,还要求具有计算字符串长度、连接两个字符串等功能,其中求字符串长度和连接字符串功能不能直接调用字符串处理函数。再编写主函数对该类进行测试。
时间: 2024-03-27 15:40:23 浏览: 91
C++课程设计之string字符串类
4星 · 用户满意度95%
好的,我可以帮你设计一个基本的字符串类。下面是一个示例代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
class Mystring {
private:
char* str;
int len;
public:
Mystring() {
str = new char[1];
str[0] = '\0';
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;
}
void print() const {
cout << str << endl;
}
int length() const {
int count = 0;
for (int i = 0; str[i] != '\0'; i++) {
count++;
}
return count;
}
Mystring concatenate(const Mystring& other) const {
char* temp = new char[len + other.len + 1];
strcpy(temp, str);
strcat(temp, other.str);
Mystring result(temp);
delete[] temp;
return result;
}
};
int main() {
Mystring str1("Hello");
Mystring str2("World");
Mystring str3 = str1.concatenate(str2);
cout << "Length of str1: " << str1.length() << endl;
cout << "Length of str2: " << str2.length() << endl;
cout << "Length of str3: " << str3.length() << endl;
str3.print();
return 0;
}
```
在这个示例代码中,我们定义了一个字符串类 `Mystring`,其中包含了字符串指针 `str` 和字符串长度 `len`。我们重载了构造函数、析构函数、复制构造函数以及赋值运算符。除了一般的输入输出字符串的功能外,我们还定义了计算字符串长度和连接两个字符串的功能。其中,计算字符串长度的函数 `length()` 是通过遍历 `str` 数组来实现的,而连接两个字符串的函数 `concatenate()` 是通过动态申请临时空间来实现的。
在主函数中,我们创建了三个字符串对象 `str1`、`str2` 和 `str3`,并测试了它们的长度和连接功能。输出结果为:
```
Length of str1: 5
Length of str2: 5
Length of str3: 10
HelloWorld
```
当然,这只是一个基本的示例代码,你可以根据需要进行扩展和修改。
阅读全文