C++string类部分函数仿写(用C语言实现)

来源:互联网 发布:统计软件spss下载 编辑:程序博客网 时间:2024/06/10 22:32

注意:有指针成员情况下,写构造函数时一定要先分配空间
同时,要写析构函数,手动释放堆空间

#include<iostream>#include<string.h>using namespace std;class stringC{    public://构造 析构     stringC();    stringC(int,char);//重复输出某个字符    stringC(const char*);//输出一串字符    stringC(const char*,int);//拷贝任意长度字符到新字符串    ~stringC();    stringC(stringC&);//比较    int compare(stringC&);    int compare(const char*);    int compare(int,int,stringC&);//长度    int length();    void Cout();//替换    stringC* replace(int,int,stringC&);    stringC* replace(int,int,stringC&,int);    private:        char* s;};/**************构造 析构 *************/stringC::stringC(){    this->s=NULL;}stringC::stringC(int num,char c){    this->s=new char[num+1];    int i;    for(i=0;i<num;i++)            s[i]=c;    s[i]='\0';}stringC::stringC(const char*s){    this->s=new char[strlen(s)+1];    strcpy(this->s,s);}stringC::stringC(stringC& p){    this->s=new char[strlen(p.s)+1];    strcpy(this->s,p.s);}stringC::~stringC(){    while(this->s!=NULL)    {            delete [] this->s;            this->s=NULL;//注意野指针问题    }}stringC::stringC(const char* p,int num){    this->s=new char[num+1];    int i;    strncpy(this->s,p,num);}/***************比较******************/int stringC::compare(int index,int length,stringC& str){    char *p=new char[length+1];    int i;    for(i=index;i<index+length;i++)        p[i-index]=this->s[i];    p[i-index]='\0';    return strcmp(p,str.s);}int stringC::compare(const char* p){    return strcmp(this->s,p);}int stringC::compare(stringC& p){    return strcmp(this->s,p.s);}/***************长度**************/int stringC::length(){    return strlen(this->s);}void stringC::Cout(){    cout<<s<<endl;}stringC* stringC::replace(int index,int num,stringC& str){//用str内的num个字符,替换自身从index开始的num个字符        int i;        for(i=index;i<index+num;i++)        {            this->s[i]=str.s[i-index];        }        return this;}int main(){/*  stringC a(5,'c');    a.Cout();    stringC b("hello cmz");    b.Cout();    stringC c(b);    c.Cout();    stringC d("hello",2);    d.Cout();    stringC a1("hello");    stringC a2("hello");    cout<<a1.compare(a2)<<endl;    cout<<a1.compare("hello")<<endl;    stringC a3("world hello");    cout<<a3.compare(6,5,a1)<<endl;    cout<<a1.length()<<endl;    stringC a4("hhhhh");    a1.replace(0,5,a4);    a1.Cout();*/  }
原创粉丝点击