String 的实现
来源:互联网 发布:淘宝等级怎么提升 编辑:程序博客网 时间:2024/06/06 01:08
#include<iostream>#include<stdio.h>#include<assert.h>using namespace std;class String{public : String(char* str="") { _size=strlen(str); _capacity=_size+1; _str=(char*)malloc(sizeof(char)*_capacity); strcpy(_str,str); } String(const String& s) :_str(NULL) { String tmp(s._str );swap(_str,tmp._str ); } String( String& s) :_str(NULL) { String tmp(s._str );swap(_str,tmp._str); } String& operator =(const String& s ) { return *this; } ~ String() { if(_str) { free(_str); } }public:void _CheckCapacity(size_t capacity){ if(capacity>_capacity){_capacity=capacity+3; _str=(char*)realloc(_str,capacity);assert(capacity);}}void PushBack(char ch){ _CheckCapacity(_size+2);_str[_size++]=ch;_str[_size]='\0';}void Insert(size_t pos,char ch){ _CheckCapacity(_size+2); for(int begin=_size;begin>=pos;--begin) { _str[begin+1]=_str[begin]; } _str[pos]=ch; ++_size;}void Insert(size_t pos,const char* str){int strSize=strlen(str); int newCapacity=_size+strSize+1; _CheckCapacity(newCapacity); int end=strSize+_size; for(int begin=_size;begin>=pos;--begin) { _str[end]=_str[begin]; --end; } strncpy(_str+pos,str,strSize); _size+=strSize;}char* GetStr(){ return _str;}bool operator<(const String& s){ char* begin1=_str;const char* begin2=s._str;while(*begin1 && *begin2){ if(*begin1 >*begin2){ return false;}else if(*begin1<*begin2){ return true;}else{ ++begin1; ++begin2;}}return *begin1<*begin2;}bool operator==(const String& s){ if(_size!=s._size) { return false; } char* begin1=_str;const char* begin2=s._str;while(*begin1 && *begin2){ if(*begin1 !=*begin2){ return false;}else{ ++begin1; ++begin2;}}return true;}private : char* _str ; int _size; int _capacity;};void test(){ String s1("hell");cout<<s1.GetStr ()<<endl;s1.PushBack ('o');s1.PushBack ('d');cout<<s1.GetStr ()<<endl;s1.Insert (5,"worl");cout<<s1.GetStr ()<<endl;}void TestOperator(){ String s1("ab"); String s2("abc"); cout<<"s1<s2: "<<(s1<s2)<<endl; String s3("ab"); String s4("abc"); cout<<"s3==s4: "<<(s3==s4)<<endl;}int main(){//test();TestOperator();system("pause"); return 0;}
阅读全文
0 0
- string class的实现
- 简单的string实现
- string.cpp的实现
- class String 的实现
- string类的实现
- String类的实现
- String类的实现
- String类的实现
- String的实现1
- string的简单实现
- String 类的实现
- String类的实现
- string的实现
- string的部分实现
- string类的实现
- String类的实现
- String类的实现
- c++ string的实现
- win7系统安装ubuntu 12.04.5(32位)双系统
- Android BaseAdapter
- 已知前序中序求后序
- 温度转换
- Java正则表达式入门
- String 的实现
- 文件处理函数-open
- 二分的基本的思路以及使用的条件
- 数据结构二叉树遍历
- FL2440-WiFi模块学习之用rt3070无线网卡使开发板上网
- 动态内存开辟malloc、calloc、realloc、free函数
- linux shell编程实例总结
- Android动画实现方式的汇总
- Spring注解:@Repository、@Service、@Controller、@Autowired