设计和实现一个特定的String classOurString,它包含以下方法,使用动态字符数组作为底层表示: 1. OurString的几个构造函数,用于创建String对象之一: a)作为没有参数的默认构造函数OurString; b)从C风格的常量字符串转换为OurString(const char*cstr),例如OurString(“123”); c)作为来自c++字符串的OurString(string str),例如: 字符串str=“123”; OurString(str); 2. 释放String对象分配的堆存储空间的析构函数。 3. toString方法,用于将String对象转换为c++字符串。 4. 返回String中字符数的方法length。 5一个方法substr(start n),它返回一个包含所有的全新字符串
时间: 2024-02-18 17:04:35 浏览: 60
,从start位置开始直到字符串的末尾。以下是一个基本的实现示例:
```c++
#include <iostream>
#include <cstring>
class OurString {
private:
char* str;
int len;
public:
OurString() {
str = new char[1];
str[0] = '\0';
len = 0;
}
OurString(const char* cstr) {
len = std::strlen(cstr);
str = new char[len + 1];
std::strcpy(str, cstr);
}
OurString(std::string cppstr) {
len = cppstr.length();
str = new char[len + 1];
std::strcpy(str, cppstr.c_str());
}
~OurString() {
delete[] str;
}
std::string toString() const {
return std::string(str);
}
int length() const {
return len;
}
OurString substr(int start) const {
OurString substr;
if (start >= len) {
return substr;
}
substr.len = len - start;
substr.str = new char[substr.len + 1];
std::strcpy(substr.str, str + start);
return substr;
}
};
```
这个示例中的OurString类包含了三个构造函数,一个析构函数,以及三个方法:toString、length和substr。其中,toString方法将OurString对象转换为c++字符串;length方法返回OurString对象中字符的数量;substr方法返回从start位置开始到字符串末尾的所有字符组成的新字符串。注意,这是一个基本的实现示例,可能还有其他需要考虑的细节。
阅读全文