项目四扩展类

本文介绍了一个简单的C++字符串类的实现,包括构造函数、析构函数、加法和减法运算符的重载,并展示了如何使用这些功能进行字符串操作。
*烟台大学计算机学院学生                                                                     
*All right reserved.                                                    
*文件名称*烟台大学计算机学院学生                                                                     
*All right reserved.                                                    
*文件名称:项项目四扩展类
*作者:杨飞                                                                              
*完成日期:2014年4月15日                                                                   
*版本号:v1.0                                                                               
*对任务及求解方法的描述部分:项目四扩展类
*我的程序:
#include <iostream>
#include <cstring>
using namespace std;
class String
{
    public:
    String();
    String(const char *s);
    String(String &str);
    ~String();
    void display( );
    friend String operator + (String &s1,String &s2 );
    friend String operator - (String &s1,String &s2 );
private:
   char *p;
   int len;
};
String::String()
{
    p=NULL;
    len=0;
}
String::String(const char *s)
{
    len=strlen(s);
    p=new char[len+1];
    strcpy(p,s);
}
String::String(String &str)
{
    len = str.len;
    p = new char[len+1];
    strcpy(p,str.p);

}
String::~String()
{
    if(!p)
   delete []p;
}
void String::display()
{
   cout<<p<<endl;
}
String operator + (String &s1,String &s2 )
{
    String s3;
    s3.len=s1.len+s2.len;
    s3.p=new char(s3.len+1);
    strcpy(s3.p,s1.p);
    strcat(s3.p,s2.p);
    return s3;
}
String operator - (String &s1,String &s2 )
{
    String s3;
    char *m=new char[s1.len+1];
    strcpy(m,s1.p);
    int i=s1.len-1;
   while(i>=0&&m[i]==' ')
      i--;
    m[i+1]='\0';
   char *m1=new char[s2.len+1];
    strcpy(m1,s2.p);
    i=0;
    while(i<s2.len&&m1[i]==' ') ++i;
    int j=0;
    while(i<s2.len&&m1[i]!='\0')
    {
        m1[j]=m1[i];
        i++;
        j++;
    }
    m1[j+1]='\0';
    s3.len = strlen(m)+strlen(m1);
    s3.p = new char(s3.len+1);
    strcpy(s3.p,m);
    strcat(s3.p,m1);
    delete m;
    delete m1;
    return s3;
}
int main()
{
     String string1(" Best  "),string2(" Software ");
     string1.display();
     string2.display();
    String string3,string4;
    cout<<"string1 + string2="<<endl;
    string3=string1+string2;
    string3.display();
    cout<<"string1 - string2="<<endl;
    string3=string1-string2;
    string3.display();
    return 0;

}


运行结果:

心得体会:这个题费了很长时间,终于做出来,但是第二个减法怎么都算不出来。

后来看看贺老师的改了改,可是怎么都不行,哎,真的无语了!!!

求大神的指教,谢谢啊!!!

这不是要死的节奏吗???

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值