码迷,mamicode.com
首页 > 编程语言 > 详细

C++ string的实现

时间:2016-03-11 06:38:44      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:string类

#include <iostream>

#include <assert.h>


using namespace std;

class String

{

public:

String(char *str = "")

:_str(new char[strlen(str)+1])

{

cout<<"String()"<<endl;

strcpy(_str,str);

}

~String()

{

cout<<"~String()"<<endl;

if(_str != NULL)

{

delete[] _str;

}

}

String(const String& str)

:_str(NULL)//_str(new char[1])

{

cout<<"String(const String& str)"<<endl;

String tmp(str._str);

swap(_str,tmp._str);

}

String& operator=(const String& str)

{

cout<<"String& operator=(const String& str)"<<endl;

String tmp(str);

swap(_str,tmp._str);//交换地址

return *this;

}

int _Strcmp(const char* dest,const char *src)

{

assert(dest);

assert(src);

while(*dest == *src)

{

if(*dest == ‘\0‘)

return 0;

dest++;

src++;

}

return (*dest-*src);

}

bool operator==(String &str)

{

int ret = _Strcmp(_str,str._str);

if(ret == 0)

return true;

return false;

}

bool operator>(String &str)

{

int ret = _Strcmp(_str,str._str);

if(ret > 0)

return true;

return false;

}

bool operator!=(String &str)

{

return !(_str == str._str);

}

    bool operator<(String &str)

{

return !((_str == str._str)&&(_str > str._str));

}

void insert(int pos,char ch)

{

int length = strlen(_str);

int i = 0;

for(i=0;i<length-pos+1;i++)

{

_str[length-i] = _str[length-1-i];

}

_str[pos-1] = ch;

_str[length+1] = ‘\0‘;

}

void _insert(int pos,char* str)

{

int i = 0;

int j = 0;

int l1 = strlen(_str);

int l2 = strlen(str);

int size = l1-pos+1;

for(i=0;i<size;i++)

{

_str[l1-i+1] = _str[l1-i-1];

}

for(j=0;j<l2;j++)

{

_str[pos-1+j] = str[j]; 

}

_str[l1+l2] = ‘\0‘;


}

void insert2(int pos,char* str)

{

_insert(pos,str);

}

void insert3(int pos,const String& str)

{

   _insert(pos,str._str);

}

int size()

{

return strlen(_str);

}

void PushBack(int ch)

{

int len = 0;

char *s_str = _str;

while(*s_str)

{

len++;

s_str++;

}

_str[len] = ch;

_str[len+1] = ‘\0‘;

}

private:

char *_str;

};

int main()

{

String str = "bi";

///*String str2(str1);

//String str3;

//str3 = str1;*/

//String str2 = "bit";

////int ret = str2.operator ==(str1);

//int ret = str2 > str1;

//char *str = "xi";

String str1 = "zhang";

//str1.insert(2,‘w‘);

//str1.insert2(3,str);

str1.insert3(1,str);

//int ret = str1.size();

//str1.PushBack(‘t‘);

//str.operator ==(str1);

return 0;

}


C++ string的实现

标签:string类

原文地址:http://10810429.blog.51cto.com/10800429/1749750

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!