实现一个string类提供具体代码
时间: 2024-05-14 16:19:28 浏览: 78
好的,以下是一个简单的string类的代码实现:
``` c++
class String {
public:
String() {
data = new char[1];
data[0] = '\0';
length = 0;
}
String(const char* str) {
length = strlen(str);
data = new char[length + 1];
strcpy(data, str);
}
String(const String& other) {
length = other.length;
data = new char[length + 1];
strcpy(data, other.data);
}
~String() {
delete[] data;
length = 0;
}
String& operator=(const char* str) {
if (data != nullptr) {
delete[] data;
}
length = strlen(str);
data = new char[length + 1];
strcpy(data, str);
return *this;
}
String& operator=(const String& other) {
if (this != &other) {
if (data != nullptr) {
delete[] data;
}
length = other.length;
data = new char[length + 1];
strcpy(data, other.data);
}
return *this;
}
char& operator[](int index) {
return data[index];
}
const char& operator[](int index) const {
return data[index];
}
bool operator==(const char* str) const {
return strcmp(data, str) == 0;
}
bool operator==(const String& other) const {
return strcmp(data, other.data) == 0;
}
bool operator!=(const char* str) const {
return strcmp(data, str) != 0;
}
bool operator!=(const String& other) const {
return strcmp(data, other.data) != 0;
}
int length() const {
return length;
}
char* c_str() const {
return data;
}
private:
char* data;
int length;
};
```
这个string类的实现提供一个基本的字符串功能,包括初始化空字符串或从已知字符串中构造字符串、复制字符串、析构字符串、重载赋值操作符、重载下标操作符以及判断两个字符串是否相等等等。注意,这里只提供了string类的核心实现,还有一些其他的功能没有实现,如字符串的拼接、查找、以及替换等等。
阅读全文