第八周 项目四 String类的构造
来源:互联网 发布:鬼玩人3黑暗军团知乎 编辑:程序博客网 时间:2024/04/26 10:54
问题及代码:
/**Copyright (c)2014,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:Project.cpp*作 者:chenqin.*完成日期:2015年4月29日*版 本 号:v1.0**问题描述:写一个能处理字符串的类.请构造String类的加、减运算。其中,s1 + s2将两个字符串的连接起来;s1 - s2是将s1的尾部空格和s2的前导空格去除后的连接。*程序输入:略*程序输出:略*/#include <iostream>using namespace std;#include <Cstring>class String{public: //需要的成员函数(若需要的话,声明友元函数) String(){p=NULL;len=0;} String(char *str); String(String &Str); ~String(); friend String operator+(String &str1,String &str2); friend String operator-(String &str1,String &str2); void display();private: char *p; //指向存储的字符串 int len; //记录字符串的长度};void String::display(){ cout <<p<<endl;}String::String(char *str){ len=strlen(str); p=new char[len+1]; strcpy(p,str);}String::String(String &str){ len =str.len; if(p!=NULL) delete[]p; p=new char[len+1]; strcpy(p,str.p);}String::~String(){ if(!p) delete[]p;}String operator+(String &str1,String &str2){ String str; str.len=str1.len+str2.len; str.p=new char[str.len+1]; strcpy(str.p,str1.p); strcat(str.p,str2.p); return str;}String operator-(String &str1,String &str2){ String str; char *c1=new char[str1.len+1]; strcpy(c1,str1.p); int i=str1.len-1; while (i>=0&&c1[i]==' ') --i; c1[i+1]='\0'; char*c2=new char[str2.len+1]; strcpy(c2,str2.p); i=0; while(i<str2.len&&c2[i]==' ') ++i; int j=0; while(i<str2.len&&c2[i]!='\0') { c2[j]=c2[i]; ++i; ++j; } c2[j]='\0'; str.len=strlen(c1)+strlen(c2); str.p=new char[str.len+1]; strcpy(str.p,c1); strcat(str.p,c2); delete c1; delete c2; return str;}int main(){ String string1(" hello "),string2(" world "),string3; string1.display(); string2.display(); string3=string1+string2; string3.display(); string3=string1-string2; string3.display(); return 0;}
运行结果:
学习心得:在处理两个字符串的过程中遇见很多问题,特别是将s1的尾部空格和s2的前导空格去除后的连接上,半天都没想明白,最后问了贺老师,老师用画图的方式才让我清晰理解了,老师说不懂的时候可以自己拿出笔自己画画,也许就懂了。
0 0
- 第八周项目 四 【项目4-String类的构造】
- 第八周 项目四-string类的构造
- 第八周 项目四:String类的构造
- 第八周项目四:String类的构造
- 第八周 项目四 String类的构造
- 第八周项目四——string类的构造
- 第八周项目四:String类的构造
- 第八周项目四String类的构造
- 第八周项目四--String类的构造
- 第八周项目四-String类的构造
- 第八周 项目四--String类的构造
- 2015年第八周项目四:string类的构造
- 第八周项目四——String类的构造
- 第八周项目四 【炒鸡难!!高能预警!】String类的构造(重载双目运算符)
- 15第八周项目四——String类的构造
- 第八周项目4——String类的构造
- 第八周项目4-String类的构造
- 第八周上机项目4—String类的构造
- 苹果
- dwz分页:点击查询条件后,点击下面的分页出现查询条件失效
- Windows Phone grid定位
- Android自定义控件系列五:自定义绚丽水波纹效果
- Robotium自动化测试
- 第八周 项目四 String类的构造
- Linux 进程栈和线程栈的区别
- PHP彩蛋还是漏洞?
- ArrayList实现原理
- Hadoop生态系统简介(转)
- Android自定义控件系列六:自定义ViewGroup(一)实现ViewPager效果
- 第一次接触vc编程,顺便写一个过300英雄od附加的检测的小例子
- PHP 设计模式之观察者模式
- webkit webApp 开发技术要点总结