【c++】第十二周上机实践作业 项目 4

来源:互联网 发布:矩阵式柔性充电堆技术 编辑:程序博客网 时间:2024/05/22 14:25
/*
 *copyright(c) 2016,烟台大学计算机学院
 *All rights reserved
 *文件名称:test.cpp
 *作者:谭泽纯
 *版本:v6.0
 *项目-String类的构造】
写一个能处理字符串的类,其数据成员如下所示:
[cpp] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. class String    
  2. {    
  3. public:  
  4.    ...//需要的成员函数(若需要的话,声明友元函数)  
  5. private:    
  6.     char *p;   //指向存储的字符串   
  7.     int len;   //记录字符串的长度    
  8. };    
请构造String类的加、减运算。其中,s1 + s2将两个字符串的连接起来;s1 - s2是将s1的尾部空格和s2的前导空格去除后的连接。

提示:有指针成员,设计时要注意。这个,你懂的。



#include<iostream>
using namespace std;
class String  
{  
public:
    String();
    String(char *s);
    ~String();
    void shuchu();
    friend String operator +(String &s1,String &s2);
    friend String operator -(String &s1,String &s2);
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()
    {

        delete[]p;
    }
    void shuchu()
    {
        cout<<p<<endl;
    }
    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);  //c++ primer plus
        return s;  
    }
    String operator -(String &s1,String &s2)
    {
        String s;  
    //c1为截去尾部空格的字符串  
    char *c1=new char[s1.len+1];  
    strcpy(c1,s1.p);  
    int i=s1.len-1;  
    while(i>=0&&c1[i]==' ') --i;  
    c1[i+1]='\0';  
 
    //c2为去除前导空格的字符串  
    char *c2=new char[s2.len+1];  
    strcpy(c2,s2.p);  
    i=0;  
    while(i<s2.len&&c2[i]==' ') ++i;  
    int j=0;  
    while(i<s2.len&&c2[i]!='\0')  
    {  
        c2[j]=c2[i];  
        ++i;  
        ++j;  
    }  
    c2[j]='\0';  
 
    //将这两部分接起来  
    s.len = strlen(c1)+strlen(c2);  
    s.p = new char[s.len+1];     //原误写char(s.len+1)  
    strcpy(s.p,c1);  
    strcat(s.p,c2);  
    delete c1;  
    delete c2;  
    return s;  
}  

    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
原创粉丝点击