#include
public: char *str; public: String(char *p=NULL); String(String & p); ~String(); public: String operator +=(char *p); String operator +=( const String &p); friend String operator +(const String &c1, const String &c2); String&operator=(const String&p); String&operator=(char*P); String operator-(const String&other); void print(); };
void String::print() {  cout< String::String(char *p) {  if(p)  {   int nlen=strlen(p)+1;   str=new char[nlen];   strcpy(str,p);  }  else   str=new char[1];   *str='\\0';   }  String::String(String & p ) {  if(p.str)  {   int nlen=strlen(p.str)+1;   str=new char[nlen];   strcpy(str,p.str);   }  else    str=NULL;   }  String::~String() {  if(str)   delete[]str; }  String String::operator +=(char *p) {  char *q;  int n=strlen(str)+1;  q=new char[n];  strcpy(q,str);  if(str)   delete[]str;  int nlen=strlen(q)+strlen(p)+1;  str=new char[nlen];  strcpy(str,q);  strcat(str,p);  return *this; }  String String::operator +=(const String&p) {  char *q;  int n=strlen(str)+1;  q=new char[n];  strcpy(q,str);  if(str)   delete[]str;  int nlen=strlen(q)+strlen(p.str)+1;  str=new char[nlen];  strcpy(str,q);  strcat(str,p.str);  return *this; }  String operator +(const String &c1, const String &c2) {  String ff;  int nlen=strlen(c1.str )+strlen(c2.str)+1; ff.str=new char[nlen]; strcpy(ff.str,c1.str); strcat(ff.str,c2.str );  return ff; }  String &String::operator =(const String&p) {  if(p.str)  {   int nlen=strlen(p.str)+1;   str=new char[nlen];   strcpy(str,p.str);  }  else    str=NULL;  return *this; }  String& String::operator =(char *p) {  if(p)  {   int nlen=strlen(p)+1;   str=new char[nlen];   strcpy(str,p);  }  else    str=NULL;  return *this; }  String String::operator -(const String&other) {  char *temp,*p;  if((temp=strstr(str,other.str))==NULL)  {   cout<<\没有符合的子串,不能使用'-'操作\  return *this;  }  else  {   p=temp;   temp=temp+strlen(other.str);   *p='\\0';   strcat(str,temp);    return *this;   }   }  void main()