2015年大一下第6周项目4-String类的构造

来源:互联网 发布:蚁群算法处理tsp问题 编辑:程序博客网 时间:2024/05/29 02:44
/**Copyright (c) 2014,烟台大学计算机学院*All rights reserved.*文件名称:Annpion.cpp*作者:王耀鹏*完成日期:2015年4月29日*版本号:v1.0**问题描述:请构造String类的加、减运算。其中,s1 + s2将两个字符串的连接起来;s1 - s2是将s1的尾部空格和s2的前导空格去除后的连接。*输入描述:无。*输出描述:s1 + s2将两个字符串的连接起来;s1 - s2是将s1的尾部空格和s2的前导空格去除后的连接.*/#include<iostream>#include<cstring>using namespace std;class String{public:   String();//需要的成员函数(若需要的话,声明友元函数)   String (char *s);   String (String &s);   ~String ();   String operator+(String &s);   String operator-(String &s);   void display();private:    char *p;   //指向存储的字符串    int len;   //记录字符串的长度};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)        delete[]p;}String String::operator+(String &s){    String str;    str.len=len+s.len;    str.p=new char[str.len+1];    strcpy(str.p,p);    strcat(str.p,s.p);    return str;}String String::operator-(String &s){    int i=len-1;    String str;    char *c1=new char[len+1];    strcpy(c1,p);    while(i>=0&&c1[i]==' ') i--;    c1[i+1]='\0';    char *c2=new char[s.len+1];    strcpy(c2,s.p);    int j=0;    while(c2[j]==' ')    {        for(int m=0;m<len;m++)            c2[m]=c2[m+1];    }    str.len=strlen(c1)+strlen(c2);    str.p=new char[str.len+1];    strcpy(str.p,c1);    strcat(str.p,c2);    delete []c1;    delete []c2;    return str;}void String::display(){    cout<<p<<endl;}int main( ){    String string1(" Hello  "), string2(" World ");    string1.display();    string2.display();    String string3;    string3 = string1 + string2;    string3.display();    string3 = string1 - string2;    string3.display();    return 0;}


运行结果:

0 0