C++数据结构(7)串
·
#include<iostream>
#include<cstring>
using namespace std;
class String {
private:
char* str;//字符数组
size_t length;//字符数,不包含'\0'
public:
String();//初始化
String(const char* s);//字符串的赋值
~String();//析构
size_t getLength()const;//得到字符串长度
char operator[](size_t index)const;//实现字符串的索引
String& operator=(const String& s);//实现字符串的赋值
bool operator==(const String& s)const;//字符串的等于
bool operator!=(const String& s)const;//字符串的不等于
String copy()const;//字符串的拷贝
String operator+(const String& s)const;//字符串的拼接
friend ostream& operator<<(ostream& out, const String& s);//
String(const String& s);
};
String::String(const String& s) {
length = s.length;
str = new char[length + 1];
strcpy(str, s.str);
}
String::String() {
length = 0;
str = new char[1];
str[0] = '\0';
}
String::String(const char* s) {
length = strlen(s);
str = new char[length + 1];//加一个给'\0'
strcpy(str, s);
}
String::~String() {
delete[] str;
}
size_t String::getLength()const {
return length;
}
char String::operator[](size_t index)const {
return str[index];
}
String& String::operator=(const String& s) {
if (this != &s) {
delete[]str;//如果不相等,要先删除this原有的内存
length = s.length;//cpoy长度
str = new char[length + 1];//创建新的内存空间
strcpy(str, s.str);//赋值
}
return *this;//返回this所指向的内容,也就是String
}
bool String::operator==(const String& s)const {
return strcmp(str, s.str) == 0;
}
bool String::operator!=(const String& s)const {
return strcmp(str, s.str) != 0;
}
String String::copy()const {
String s = *this;
return s;
}
String String::operator+(const String& s)const {
String result;
result.length = length + s.length;
result.str = new char[result.length + 1];
strcpy(result.str, str);
strcat(result.str, s.str);
return result;
}
ostream& operator<<(ostream& out, const String& s) {
out << s.str;
return out;
}
int main() {
String s("12345d");
cout << s << endl;
cout << s + "445" << endl;
cout << s[5] << endl;
cout << (s == "12345d") << endl;
cout<< (s != "12345d") << endl;
s = s + "asd";
cout << s << endl;
String a, b, c;
a = b = c = s;
cout << a << b << c << s << endl;
String x = s.copy();
cout << x << endl;
}
更多推荐



所有评论(0)