第八周上机实践项目4-String类的构造(减法精简了一些哦)
2015-04-30 18:39
393 查看
写一个能处理字符串的类,其数据成员如下所示:
请构造String类的加、减运算。其中,s1 + s2将两个字符串的连接起来;s1 - s2是将s1的尾部空格和s2的前导空格去除后的连接。
提示:有指针成员,设计时要注意。这个,你懂的。
程序如下:
心得:
本以为很简单的小程序,没想到里面这么绕。。。忘了这个忘了那个的。。。
没设计析构函数,本来写的是
减法参考了以前做的一道关于去掉字符串开头空格的项目,单独把s2.p末尾空格去掉,再把s1.p开头空格去掉,然后使用String类的加法就OK了~~~
简单大气!是我的风格!
class String { public: ...//需要的成员函数(若需要的话,声明友元函数) private: char *p; //指向存储的字符串 int len; //记录字符串的长度 };
请构造String类的加、减运算。其中,s1 + s2将两个字符串的连接起来;s1 - s2是将s1的尾部空格和s2的前导空格去除后的连接。
提示:有指针成员,设计时要注意。这个,你懂的。
程序如下:
<span style="font-size:14px;">#include <iostream> #include <cstdio> #include <cstring> using namespace std; class String { public: //需要的成员函数(若需要的话,声明友元函数) String(char *a) { len=strlen(a); p=new char[len+1]; //(a)这样处理的意义在于:杜绝野指针,使程序能正常运行 strcpy(p, a); //(b)数据成员a与形式参数aa的关系:a保存和aa一样的地址 } String() { len=0; p=NULL; } void output() { cout<<p<<endl; } friend String operator + (String &s1,String &s2); friend String operator - (String &s1,String &s2); private: char *p; //指向存储的字符串 int len; //记录字符串的长度 }; 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);//strcat与strcpy的使用:strcat是用来连接两个字符串的,strcpy是复制并覆盖的 return s; } String operator - (String &s1,String &s2) { String s3,s4,s; char *i=s1.p,*j=s2.p; int k=strlen(i),m; while(i[k-1]==' ') { i[k]='\0'; k--; } i[k]='\0'; s3.p=i; s3.len=k; for(m=0;*j==' ';j++,m++); s4.p=j; s4.len=s2.len-m; s=s3+s4; return s; } int main() { String s1(" manxcc is tall. "),s2(" see you again "),s3; s1.output(); s2.output(); cout<<"s1+s2="; s3=s1+s2; s3.output(); cout<<"s1-s2="; s3=s1-s2; s3.output(); return 0; }</span>图片:
心得:
本以为很简单的小程序,没想到里面这么绕。。。忘了这个忘了那个的。。。
没设计析构函数,本来写的是
~String { if(p!=NULL) delete []p; }但是这样运行出来的结果不对,我也很纠结,就没写。。。
减法参考了以前做的一道关于去掉字符串开头空格的项目,单独把s2.p末尾空格去掉,再把s1.p开头空格去掉,然后使用String类的加法就OK了~~~
简单大气!是我的风格!
相关文章推荐
- 第八周上机实践项目4——String类的构造
- 第十二周上机实践项目4:String类的构造
- 第八周上机项目4—String类的构造
- 第八周 项目四:String类的构造
- 第八周上机实践项目2——建立链串的算法库
- 第八周上机实践项目——要不要加油你?
- 第八周上机实践项目——实现复数类中的运算符重载(1)
- 第八周上机实践项目3——分数类的运算符重载(1)
- 第八周 项目四 String类的构造
- 第八周上机实践项目-项目三-指向学生类的指针
- 第八周上机实践项目——项目4-游戏中的角色类增强版-问题(2)
- 数据结构上机实践第八周项目9-广义表算法库及应用
- 第八周上机实践项目4(2):游戏中的角色类增强版
- 第八周上机实践项目-项目1-(3)
- 数据结构上机实践第八周项目3-顺序串算法
- 第八周上机实践项目4-字符串加密
- 第八周上机实践—项目4—字符串加密
- 数据结构上机实践第八周项目5 - 计数的模式匹配
- 第八周上机实践项目1
- 第八周项目4--String类的构造