#include <iostream>
#include <cstring>
using namespace std;
class my_string
{
private:
char *str;
int str_len;
public:
//无参构造
my_string()
{
str=NULL;
str_len=0;
}
//有参构造
my_string(char *s)
{
str=new char[strlen(s)+1];
strcpy(str,s);
str_len=strlen(s);
}
//关系运算符
//>
const bool operator>(const my_string &s)const
{
if(strcmp(this->str,s.str)>0)
{
return true;
}
else
{
return false;
}
}
//<
const bool operator<(const my_string &s)const
{
if(strcmp(this->str,s.str)<0)
{
return true;
}
else
{
return false;
}
}
//==
const bool operator==(const my_string &s)const
{
if(strcmp(this->str,s.str)==0)
{
return true;
}
else
{
return false;
}
}
//+
const my_string operator+(const my_string &s)const
{
my_string temp;
temp.str=this->str;
strcat(temp.str,s.str);
temp.str_len=this->str_len+s.str_len;
return temp;
}
//+=运算符
my_string &operator+=(const my_string &p)
{
char *temp=new char(strlen(this->str));
strcpy(temp,this->str);
delete this->str;
this->str=new char[strlen(this->str)+strlen(p.str)];
strcpy(this->str,temp);
strcat(this->str,p.str);
delete temp;
return *this;
}
//[]
const char operator[](const int p)const
{
if(p<0)
{
cout<<"输入错误"<<endl;
}
return this->str[p];
}
//show
void string_show()
{
cout<<"str= "<<this->str<<endl;
}
};
int main()
{
my_string s1("good morning");
my_string s2("hello world");
int ret=s2>s1;
cout<<"s2>s1:"<<ret<<endl;
ret=s2<s1;
cout<<"s2<s1:"<<ret<<endl;
ret=s2==s1;
cout<<"s2==s1:"<<ret<<endl;
my_string s3;
s3=s1+s2;
s3.string_show();
s1+=s2;
s1.string_show();
return 0;
}