代码如下
#include <iostream.h>
#include <string.h>
class mstring
{
private:
char *s;
int len;
public:
mstring(const char *str="sas");
mstring(const mstring&str);
friend mstring operator +(const mstring&str1,const mstring&str2);
mstring& operator+=(const char *str);
mstring& operator+=(const mstring &str);
mstring& operator+(const char *str);
friend bool operator==(const mstring &, const char *);
friend bool operator==(const mstring &, const mstring &);
friend bool operator!=(const mstring &str1, const char *str2);
friend bool operator!=(const mstring &str1, const mstring&str2);
friend ostream& operator<<(ostream&out,const mstring&str);
friend istream& operator>>(istream&in,const mstring&str);
};
mstring::mstring(const mstring&str)
{
len=strlen(str.s);
s=new char(len+1);
strcpy(s,str.s);
}
mstring::mstring(const char *str)
{
len=strlen(str);
s=new char(len+1);
strcpy(s,str);
}
mstring operator +(const mstring&str1,const mstring&str2)
{
mstring str;
str.len=str1.len+str2.len;
str.s=new char(str.len+1);
strcpy(str.s,str1.s);
strcat(str.s,str2.s);
return str;
}
mstring& mstring::operator+=(const char *str)
{
s=strcat(s,str);
return *this;
}
mstring& mstring::operator+=(const mstring &str)
{
s=strcat(s,str.s);
return *this;
}
mstring& mstring::operator+(const char *str)
{
mstring str1;
str1.len=len;
str1.s=new char(len+1);
str1.s=s;
s=new char(len+strlen(str)+1);
s=strcat(str1.s,str);
return *this;
}
ostream& operator<<(ostream&out,const mstring&str)
{
out<<str.s<<endl;
return out;
}
istream& operator>>(istream&in,const mstring&str)
{ cout<<"please import :"<<endl;
in>>str.s;
return in;
}
bool operator==(const mstring &str1, const char *str2)
{
if(strcmp(str1.s,str2) == 0)
return true;
return false;
}
bool operator!=(const mstring &str1, const char *str2)
{
if(strcmp(str1.s,str2) == 0)
return false;
return true;
}
bool operator==(const mstring &str1, const mstring &str2)
{
if(strcmp(str1.s,str2.s) == 0)
return true;
return false;
}
bool operator!=(const mstring &str1, const mstring &str2)
{
if(strcmp(str1.s,str2.s) == 0)
return false;
return true;
}
void main()
{
mstring str1("ma");
mstring str2("yun");
cout<<"str1="<<str1;
cout<<"str2="<<str2;
mstring str3;
cout<<"str3 ";
cin>>str3;
mstring str4;
cout<<"str4 ";
cin>>str4;
mstring str5;
str5=str3+str1;
cout<<"str3+str1="<<str5<<endl;
str4+=str3;
cout<<"sre4+=str3="<<str4<<endl;
str2=str2+"sss";
cout<<"str2+sss="<<str2<<endl;
str1+="123";
cout<<"str1 += 123="<<str1<<endl;
cout<<"str1 == str1 ?";
if(str1==str1)
{
cout<<" YES"<<endl<<endl;
}
cout<<"str1 !=s tr2 ?";
if(str1!=str2)
{
cout<<" YES"<<endl;
}