#include <iostream>
#include <cstring>
using namespace std;
class String
{
private:
char *p;
int len;
public:
String();
~String();
String(char *s);
String(String &s);
friend String operator+(String &s1,String &s2);
friend String operator-(String &s1,String &s2);
void display();
};
String::String()
{
len=0;
p=NULL;
}
String::String(char *s)
{
len=strlen(s);
p=new char[len+1];
strcpy(p,s);
}
String::String(String &s)
{
len=s.len;
p=new char[len+1];
strcpy(p,s.p);
}
String::~String()
{
if(p==NULL)
delete []p;
}
String operator+(String &s1,String &s2)
{
String s;
s.len=s1.len+s2.len;
s.p=new char[s.len+1];
strcpy(s.p,s1.p);
strcat(s.p,s2.p);
return s;
}
String operator-(String &s1,String &s2)
{
String s;
int i,count1=0,count2=0;
for(i=s1.len-1; s1.p[i]==' '; i--)
{
count1++;
s1.p[i]='\0';
}
for(i=0; s2.p[i]==' '; i++)
count2++;
for(i=0; i<s2.len-count2; i++)
{
s2.p[i]=s2.p[i+1];
}
s.p=new char[s1.len+s2.len+1-count1-count2];
strcpy(s.p,s1.p);
strcat(s.p,s2.p);
return s;
}
void String::display()
{
cout<<p<<endl;
}
int main()
{
String s1(" My home "),s2(" Zun yi "),s;
s1.display();
s2.display();
s=s1+s2;
cout<<"s1+s2=";
s.display();
s=s1-s2;
cout<<"s1-s2=";
s.display();
return 0;
}
运行结果: