【项目5-扩充String类】

来源:互联网 发布:仆の知らない母磁力 编辑:程序博客网 时间:2024/05/22 12:05
//在String类中增加一个数据成员len表示字符串中字符个数,//然后构造String类的相关运算。这些运算可以包括:s1 + s2用于两个字符串的连接;s1 - s2用于将s1的尾部空格去除后的连接;//s1*n的结果为将s1中的字符重复n次;s1/s2表示在s1中删除所有与s2相同的子串。这些运算本身并无统一的规范,//多想一些字符串上的操作,利用运算符的重载实现之。#include<iostream.h>#include<string.h>class String{private:char *p;int len;public:String();String(const char *s);void display();friend String operator+(String &s1,String &s2);//实现s1 + s2用于两个字符串的连接friend String operator-(String &s1,String &s2);//去掉s1后的空格};String::String(){    len = 0;    p = NULL;}String::String(const char *s){len=strlen(s);p=new char[len+1];strcpy(p,s);}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);    return s;}String operator - (String &s1,String &s2){String s;//为'hello  '去掉一个空格char *c1=new char[s1.len+1];    strcpy(c1,s1.p);    int i=s1.len-1;    while(c1[i]==' ') --i;    c1[i+1]='\0';char *c2=new char[s2.len+1];    strcpy(c2,s2.p);s.len = strlen(c1)+strlen(c2);    s.p = new char(s.len+1);    strcpy(s.p,c1);    strcat(s.p,c2);    return s;}void String::display(){cout<<p<<endl;}int main( ){    String string1("Hello  "),string2("World");    String string3;    string3 = string1 + string2;string3.display();String string4;    string4=string1-string2;string4.display();return 0;}

原创粉丝点击