#define _CRT_SECURE_NO_WARNINGS
#include<iostream.h>
#include<string>
//using namespace std;
class String
{
public:
String();
String(const char *s) ;
String(String &s);
~String();
void display();
friend String operator +(const String &s1,const String &s2);
friend String operator -(const String &s1,const String &s2);
//需要的成员函数(若需要的话,声明友元函数)
private:
char *P; //指向存储的字符串
int len; //记录字符串的长度
};
String::String()
{
len=0;
P=NULL;
}
String::String(const 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];
for(int i=0;i<len;i++)
P[i]=s.P[i];
}
String ::~String()
{
delete[] P;
}
String operator +(const String &s1,const String &s2)
{
String S;
S.len=s1.len+s2.len;
S.P=new char[S.len+1];
for(int i=0;i<s1.len;i++)
{
S.P[i]=s1.P[i];
}
for(int j=0;j<s2.len;j++)
{
S.P[j+s1.len]=s2.P[j];
}
return S;
}
String operator -(const String &s1,const String &s2)
{
String S;
int k=0,j=0;
int i=0;
S.len=s1.len+s2.len;
S.P=new char[S.len];
for(i=0;i<s1.len;i++)
{
if(s1.P[i]==' ')
{
continue;
}
S.P[k]=s1.P[i];
k++;
}
for(i=0;i<s2.len;i++)
{
if(s2.P[i]==' ')
continue;
S.P[k+j]=s2.P[i];
j++;
}
S.len = k+j;//在结尾的时候重新修改数组的长度
return S;
}
void String::display()
{
for(int i=0;i<len;i++)
cout<<P[i];
}
int main( )
{
String string1(" Hello "), string2(" World ");
string1.display();
string2.display();
cout<<endl;
String string3 = string1 + string2; //定义了string的时候,系统自动调用拷贝构造函数
string3.display();
cout<<endl;
String string4 = string1 - string2;
string4.display();
cout<<endl;
system("pause");
return 0;
}
运行结果: