第七周项目4——String类的构造
来源:互联网 发布:忙与闲 知乎 编辑:程序博客网 时间:2024/05/23 01:43
问题及代码:
/* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:string.cpp *作 者:赵敏 *完成日期:2015年4月30日 *版 本 号:v1.0 * *问题描述:请构造String类的加、减运算。其中,s1 + s2将两个字符串的连接起来;s1 - s2是将s1的尾部空格和s2的前导空格去除后的连接。提示:有指针成员,设计时要注意。这个,你懂的。 */ #include <iostream>#include<cstring>using namespace std;class String{public: //需要的成员函数(若需要的话,声明友元函数) String(); String(const char *s); String(String &c); ~String(); void display( ); 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(const char *s){ len=strlen(s); p=new char[len+1]; strcpy(p,s);}String ::String(String &c){ len = c.len; if(p!=NULL) delete []p; p = new char[len+1]; strcpy(p,c.p);}String::~String(){ if(!p) delete []p;} void String::display( ) { cout<<p<<endl; } String operator + (String &s1,String &s2 ) { String s; s.len = s1.len+s2.len; s.p = new char[s.len+1]; //原误写char(s.len+1) strcpy(s.p,s1.p); strcat(s.p,s2.p); return s; } String operator - (String &s1, String &s2 ){ String s; 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'; 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]; strcpy(s.p,c1); strcat(s.p,c2); delete c1; delete c2; return s;}int main(){ String string1(" My "), string2(" Dream "); string1.display(); string2.display(); String string3; string3=string1+string2; string3.display(); string3=string1-string2; string3.display(); return 0;}
运行结果:
知识点总结:
运算符重载
0 0
- 第七周项目4——String类的构造
- 第七周项目 4 String类的构造
- 第八周项目4——String类的构造
- 第八周上机项目4—String类的构造
- 第八周项目四——string类的构造
- 第八周项目四——String类的构造
- 第八周项目 四 【项目4-String类的构造】
- 第7周-项目4-String类的构造-构造String类的加、减运算
- 第十二周实践项目4————string类的构造
- 第八周上机实践项目4——String类的构造
- 第十二周项目 String类的构造
- 第八周项目4-String类的构造
- 第8周项目4 String类的构造
- 第8周项目4-String类的构造
- 第8周项目4-String类的构造
- 第八周 项目4-String类的构造
- 第八周【项目4-String类的构造】
- 第八周项目4 String 类的构造
- Windows Tinyxml读取xml文件小结
- Firefox及Chrome访问Https类型Web站点报错
- (struts2) spring mvc + mybatis + maven整合
- ZOJ 1610
- Android 5.0(Lollipop)中的SurfaceTexture,TextureView, SurfaceView和GLSurfaceView
- 第七周项目4——String类的构造
- ASP.NET ViewState详解
- hdu 1032 The 3n + 1 problem (打表)
- oracle中exp,imp的使用详解
- java.util.Collections
- EJB JPA实例
- [乐意黎原创] glassfish里抛出Note: string:///XXX_jsp.java from uses unchecked or unsafe operations.
- Web前端的缓存机制(那些以代价换来的效率)
- 手机APP开发的盈利模式有哪些