String类的增删查改
来源:互联网 发布:淘宝上买东西怎么支付 编辑:程序博客网 时间:2024/04/27 16:45
class String{public:friend ostream& operator<<(ostream& os,const String&s){os<<s._size<<" "<<s._capatity<<" "<<s._str<<endl;return os;}String(const char*str=""):_size(strlen(str)),_capatity(_size),_str(new char[strlen(str)+1]){strcpy(_str,str);}String(const String& s):_size(strlen(s._str)),_capatity(s._size),_str(new char[strlen(s._str)+1]){strcpy(_str,s._str);}String& operator=(const String&s){if(this!=&s){char* tmp=new char[strlen(s._str)+1]; delete[]_str; strcpy(tmp,s._str); _str=tmp; _size=strlen(_str); _capatity=strlen(_str);}return *this;}~String(){if(_str!=NULL){delete[]_str;_str=NULL;}}char& operator[](size_t pos){return _str[pos];}bool operator==(const String&s)const{int i=0;for(i=0;i<_size&&i<s._size;i++){if(_str[i]!=s._str[i]){return false;}}if(i==_size&&i==s._size)return true;elsereturn false;}bool operator<(const String&s)const{int i=0;for(i=0;i<_size&&i<s._size;i++){if(_str[i]<s._str[i])return true;if(_str[i]>s._str[i])return false;}if(i==_size&&i!=s._size)return true;elsereturn false;}bool operator !=(const String&s)const{return !(*this==s);}bool operator>(const String&s)const{return !(*this<s);}bool operator<=(const String&s)const{return (*this<s)||(*this==s);}bool operator>=(const String&s)const{return (*this>s)||(*this==s);}void Expand(size_t n){if(n>_capatity){_str=(char*)realloc(_str,n+1);assert(_str);_capatity=n;}}void Pushback(char ch){if(_size=_capatity){Expand(_capatity*2);}_str[_size++]=ch;_str[_size]='\0';}void Pushback( char* str){size_t len=strlen(str);if(_size+len>_capatity){Expand(_size+len);}strcpy(_str+_size,str);_size+=len;}void Popback(){assert(_str);_str[--_size]='\0';}void Insert(size_t pos,char ch){assert(_str);size_t end=_size;while(pos<=end){_str[end+1]=_str[end];--end;}_str[pos]=ch;_size++;}void Insert(size_t pos,char* str){ assert(_str);size_t len=strlen(str);if(_size+len>_capatity){Expand(_size+len);}int end=_size;while(pos<=end){_str[end+len]=_str[end];--end;}while(*str){_str[pos++]=*str++;}_size+=len;}void Erase(size_t pos,size_t len){assert(_str); if(pos+len>_size){_str[pos]='\0';_size=pos;}else{strcpy(_str+pos,_str+pos+len);_size-=len;}} int Find(char ch){int i=0;int pos=0;size_t len=strlen(_str);for(i=0;i<len;i++){if(_str[i]==ch)return pos;pos++;}/*while(*_str++){if(*_str==ch){return pos;}pos++;}*/return -1;}
阅读全文
0 0
- String类的增删查改
- String类增删改查的实现
- string的增删改查
- string的增删查改
- String的增删查改的实现
- 模拟实现string类的增删查改
- String类深拷贝写法的增删查改
- C++ string字符串的增删改查
- C++ String的增删查改
- 模拟实现string的增删查改
- 模拟String的增删查改
- C++ 模拟String类增删查改
- 模拟实现String类增删查改
- C++ string类增删查改
- String—增删查改
- String深拷贝+String增删改查
- JAVA学习之旅--String数组的增删改查
- Hibernate类的增删改查
- Qt5上位机串口助手程序
- 使用Eclipse配置Struts2开发环境
- 为什么UI设计比平面设计更值钱
- python mysql中不能在同一个sql语句中,先select同一个表的某些值,然后再update这个表。
- syn flood攻击和syn cookie预防简介------cat /proc/sys/net/ipv4/tcp_syncookies
- String类的增删查改
- document.all.WebBrowser.ExecWB的完整说明
- Spark算子(二)
- 【LectCode】129. Sum Root to Leaf Numbers
- 网易设计师:交互设计要承担的8大工作职能
- 广度优先搜索之入门题目->抓住那只牛
- 潘石屹:人工智能时代房价会降 向轻资产平台转型【智库2861】
- CSS之reponsive navigation bar
- Andriod 布局