第8周项目--string 类
来源:互联网 发布:833tt换什么域名了 编辑:程序博客网 时间:2024/06/03 21:39
/* *All rights reserved. *文件名称:main.cpp *作 者:姜 甜 甜 *完成日期:2015年4月28日 *版 本 号:v1.0 * *问题描述:请构造String类的加、减运算。其中,s1 + s2将两个字符串的连接起来;s1 - s2是将s1的尾部空格和s2的前导空格去除后的连接。 提示:有指针成员,设计时要注意。这个,你懂的。*/
#include<iostream>#include<cstring>using namespace std;class String{public: String(); String(String &a); String(char *s1); ~String(); String operator+(String &s);//s1 + s2将两个字符串的连接起来;s1 - s2是将s1的尾部空格和s2的前导空格去除后的连接。 String operator-(String &s); void display();private: char *p; //指向存储的字符串 int len; //记录字符串的长度};String::String(){ len=0; p=0;}String::String(String &a){ len=a.len; if(p!=NULL) <span style="color:#ff0000;"> delete []p; //当发生在赋值等情形时,原对象可能已经存在,需释放原有空间</span> p = new char[len+1]; strcpy(p,a.p);}String::String(char *s1){ len=strlen(s1); p=new char[len+1];// strcpy(p,s1);}String String::operator+(String &s1){ String s; s.len = len+s1.len; s.p = new char[s.len+1]; //原误写char(s.len+1) strcpy(s.p,p); strcat(s.p,s1.p); return s;}String String::operator-(String &s2){ String s; //c1为截去尾部空格的字符串 char *c1=new char[len+1]; strcpy(c1,p); int i=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;}String::~String(){ <span style="color:#ff0000;">if(!p) delete []p;</span>}void String::display(){ cout<<p; cout<<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
- 第8周项目--string 类
- 第8周项目4-string类
- C++第8周项目5 - 扩充String类
- C++第8周(春)项目4 扩充String类
- 第8周项目四扩充string 类
- 第8周项目4 String类的构造
- 第8周项目4-String类的构造
- 第8周项目4-String类的构造
- 第8周 项目4 String类的构造
- 第8周项目4-String类的构造
- 第12周实践项目-String类
- 第7周项目4-string类的构造
- 第7周项目4-string类的构造
- 第12周项目4-String类的构造
- 第12周项目4-string类的构造
- 第12周项目4-String类的构造
- 第7周-项目4-String类的构造-构造String类的加、减运算
- C++第12周项目 多态性 【String类的构造 】(复习新版)
- Android自定义控件系列三:自定义开关按钮(二)
- 详解Objective-C的meta-class
- 第七周项目 2 Time类中的运算符重载
- 自定义文件上传控件样式
- activiti获取偏移量minx与miny
- 第8周项目--string 类
- ZOJ 3870 Team Formation (异或运算)
- 有意思的还有没有意思的
- kivy reference
- 第七周项目 3 分数类中的运算符重载(1)
- 回溯法--二叉树遍历和素数环
- inent 传List
- 装饰者模式
- Android自定义控件系列四:自定义开关按钮(三)--- 自定义属性