myString

#include <iostream>
using namespace std;

class MyString{
private:
    char *str;
public:
    MyString(const char* ss){
        int jj = 0;
        while(ss[jj]!='\0'){
            jj++;
        }
        int ii;
        str = new char[jj];
        for(ii=0;ii<jj;ii++){
             str[ii] = ss[ii];
        }
        str[ii] = '\0';
    }
    MyString(){}
    MyString(MyString& ms){
        int jj = 0;
        while(ms.str[jj]!='\0'){
            jj++;
            
        }
        int ii;
        str =new char[jj];
        for(ii=0;ii<jj;ii++){
            str[ii] = ms.str[ii];
        }
        str[ii] = '\0';  
    }
    /*MyString(const char* pp){
        int jj = 0;
        while(pp[jj]!='\0'){
            jj++;
        }
        int ii;
        str = new char[jj];
        for(ii=0;ii<jj;ii++){
            str[ii] = pp[ii];
        }
        str[ii] = '\0';
    }*/
    void print(){
        int ii = 0;
        while(str[ii]!='\0'){
            ii++;
        }
        int jj = 0;
        while(jj<ii){
            if(str[jj]!='*'){
                cout<<str[jj];
            }
            jj++;
        }
        cout<<endl;
    }
    friend MyString operator+(MyString &ms,const char* pp);
    friend MyString operator-(MyString &ms,const char* pp);
    friend int operator>(MyString &ms,const char* pp); 
    friend ostream & operator << (ostream &os,const char *s);
    char* operator=(const char* pp);
    //friend char* operator+(const char* p1,const char*p2);
};

char* MyString::operator=(const char* pp){
    int jj = 0;
        while(pp[jj]!='\0'){
            jj++;
        }
        int ii;
        this->str = new char[jj];
        for(ii=0;ii<jj;ii++){
            this->str[ii] = pp[ii];
        }
        this->str[ii] = '\0';
        //cout<<this->str;
        return this->str;
}
MyString operator+(MyString &ms,const char* pp){
        int len1 = 0;
        int len2 = 0;
        while(ms.str[len1]!='\0'){
            len1++;
        }
        while(pp[len2]!='\0'){
            len2++;
        }
        char ss[len1];
        int ll = 0;
        while(ms.str[ll]!='\0'){
            ss[ll] = ms.str[ll];
            ll++;
        }
        ss[ll] = '\0';
        int len = len1 + len2;
        
        int ii;
        delete ms.str;
        ms.str = new char[len];
        for(ii = 0;ii<len1;ii++){
            ms.str[ii] = ss[ii];
        }
        int plen = 0;
        for(ii = len1;ii<len;ii++){
            ms.str[ii] = pp[plen];
            plen++;
        }
        ms.str[len] = '\0';
        return ms;
}

MyString operator-(MyString &ms,const char* pp){
    int len1 = 0;
    int len2 = 0;
    int ii,jj;
    ii = jj =0;
    while(ms.str[len1]!='\0'){
        len1++;
    }
    while(pp[len2]!='\0'){
        len2++;
    }
    while(pp[ii]!='\0'){
        for(jj = 0;jj<len1;jj++){
            if(ms.str[jj]==pp[ii]){
                ms.str[jj] ='*';
                break;
            }
        }
        ii++;
    }
    return ms;
}

int operator>(MyString &ms,const char* pp){
    /*int len1 = 0;
    int len2 = 0;
    int ii,jj;
    ii = jj =0;
    while(ms.str[len1]!='\0'){
        len1++;
    }
    while(pp[len2]!='\0'){
        len2++;
    }
    if(ms.str[0]>pp[0]){
        cout<<"1"<<endl;
    }
    else if(ms.str[0]<pp[0]){
        cout<<"-1"<<endl;
    }
    else
    {
        
    }*/
    
    int ret = 0;
    while(!(ret=*(unsigned char *)ms.str-*(unsigned char *)pp)&&ms.str&&*pp)
    {
        ++ms.str;
        ++pp;
        if(ret<0)
            ret = -1;
        else if(ret>0)
            ret = 1;
    }
    cout<<ret<<endl;
    return ret;
}
int main(){
    cout<<"New>>>>>>"<<endl;
    MyString dd;
    MyString hhh("hhhh");
    dd = "b";
    dd = dd+"fffff";
    MyString ss = dd;
    dd.print();
    ss.print();
    ss = ss - "a";
    //cout<<<<endl;
    dd > "a";
    dd.print();
    /*MyString hh = "hello"+"hhhh";
    hh.print();*/
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值