1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 class String{ 5 public: 6 //默认构造函数 7 String(const char* str=NulL); 8 //复制构造函数 9 String(const String &str); 10 //析构函数 11 ~String(); 12 //字符串连接 13 String operator+(const String & str); 14 //字符串赋值 15 String & operator=(const String & str); 16 //字符串赋值 17 String & operator=(const char* str); 18 //判断字符串是否相等 19 bool operator==(const String & str); 20 //获取字符串长度 21 int length(); 22 //求子字符串[start,start+-1] 23 String substr(int start,int n); 24 //重载输出 25 frIEnd ostream & operator<<(ostream & o,const String & str); 26 private: 27 char * data; 28 int size; 29 }; 30 //构造函数 31 String::String(const char *str){ 32 if(str==NulL){ 33 data=new char[1]; 34 data[0]=‘‘; 350 size=; 36else }{ 37strlen(str); size= 38new data=char 1[size+]; 39 strcpy(data,str); 40 } 41" cout<<str<<构造"endl;<< 42} 43// 复制构造函数 44const String::String( str){ String & 45str.size; size= 46new data=char 1[size+]; 47" cout<<str<<拷贝"endl;<< 48 strcpy(data,str.data); 49} 50// 析构函数 51String(){ String::~ 52delete [] data; 53} 54// 字符串连接 55operator String String::const+( str){ String & 56 String newStr; 57// 释放原有空间 58delete [] newStr.data; 59str.size; newStr.size=size+ 60new newStr.data=char 1[newStr.size+]; 61 strcpy(newStr.data,data); 62size,str.data); strcpy(newStr.data+ 63return newStr; 64} 65// 字符串赋值 66operator String & String::const=(str){ String & 67if str.data){(data== 68return this *; 69 } 70delete [] data; 71str.size; size= 72new data=char 1[size+]; 73 strcpy(data,str.data); 74" cout<<str<<赋值"endl;<< 75return this *; 76} 77// 字符串赋值 78operator String & String::const=(char str){* 79if str){(data== 80return this *; 81 } 82delete [] data; 83strlen(str); size= 84new data=char 1[size+]; 85 strcpy(data,str); 86" cout<<str<<赋值"endl;<< 87return this *; 88} 89// 判断是否字符串相等 90bool operator String::const==(str){ String & 91return 0 strcmp(data,str.data)==; 92} 93// 获取字符串长度 94int String::length(){ 95return size; 96} 97// 求子字符串[start,start+n-1] 98int String String::substr(int start, n){ 99 String newStr; 100delete [] newStr.data;101new newStr.data=char 1[n+];102for int(0 i=i){;i<n;++103i]; newStr.data[i]=data[start+104 } 105‘ newStr.data[n]=‘;106n;107 newStr.size=return newStr; 108}109 //重载输出 110operatorconst ostream & str){<<(ostream &o,111 String &str.data;112 o<<return o; 113}114 int main(){ 115"Hello String str1(");116str1;117 String str2=str1;118 str2=return0 ; 119 }总结
以上是内存溢出为你收集整理的请用c++ 实现stl中的string类,实现构造,拷贝构造,析构,赋值,比较,字符串相加,获取长度及子串等功能。全部内容,希望文章能够帮你解决请用c++ 实现stl中的string类,实现构造,拷贝构造,析构,赋值,比较,字符串相加,获取长度及子串等功能。所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)