在C++中自定义string类

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在C++中自定义string类

#pragma once

#include

class str

{

public:

str(void);

str(char*);

~str(void);

protected:

char* string;

public:

int length(void);

int findchar(char s);

int findstr(char* str);

char** seg(char* sign, int* out=NULL);

char* copy(int start, int end);

int findchar(char* str, char c);

int findstr(char* str, char* s);

int contain(char* str);

int contain(char* strin, char* str);

int length(char* p);

char* copy(char* str, int start, int end);

char** seg(char* str, char* sign, int* out=NULL);

char* tochar(void);

char* tochar(str str);

void tostring(char* c);

char* substr(char* string, char* str);

bool substr(char* str);

char* suballstr(char* string, char* str);

bool suballstr(char* str);

char* appendstr(char* string, char* str);

bool appendstr(char* str);

};

#include"str.h"

str::str(void)

{

string=NULL;

}

str::str(char*s)

{

string=s;

}

str::~str(void)

{

if(string!=NULL)

free(string);

}

int str::length(void)

{

return length(string);

}

int str::findchar(char s)

{

return findchar(string,s);

}

int str::findstr(char* str)

{

return findstr(string,str);

}

char** str::seg(char* sign, int* out) {

return seg(string,sign,out);

}

char* str::copy(int start, int end) {

return copy(string,start,end); }

int str::findchar(char* str, char c)

{

if((!str)||(*str==NULL)||(c==NULL))

return -1;

char*p=str;

while(*p)

{

if(*p==c)

return p-str;

p++;

}

return -1;

}

int str::findstr(char* str, char* s)

{

if((!s)||(*s==NULL)||(*str==NULL)||(!str)) return -1;

char*p=str;

int i;

while(*p)

{

if((i=findchar(p,*s))!=-1)

{

p+=i;

if(contain(p,s))

return p-str;

}

p++;

}

return -1;

}

int str::contain(char* str)

{

return contain(string,str);

}

int str::contain(char* strin, char* str)

{

if(!str||(*str==NULL)||!strin||(*strin==NULL))

return 0;

while(*str)

{

if((*str++)!=(*strin++))

return 0;

}

return 1;

}

int str::length(char* p)

{

if(!p)

return 0;

char*pi=p;

while(*pi)

{pi++;}

return pi-p;

}

char* str::copy(char* str, int start, int end)

{

if((!str)||(*str==NULL)||(start<0)||(end<0))

return NULL;

int lengt=length();

if(end>lengt)

end=lengt;

if(start>end)

end=start;

int l=end-start+1;

char*result=(char*)malloc((l+1)*sizeof(char));

int i;

for(i=0;i

{

result[i]=str[i+start];

}

result[i]='\0';

return result;

}

char** str::seg(char* str, char* sign, int* out)

{

if(out==NULL)

out=new int[1];

if(!sign||(*sign==NULL)||(str==NULL))

return NULL;

相关文档
最新文档