第八周项目四--String类的构造
来源:互联网 发布:网络目标人群分析 编辑:程序博客网 时间:2024/04/27 17:19
问题及代码:
/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:尚 月 * 完成日期:2015年 05 月 09 日 * 版 本 号: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 &str); //构造函数 ~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 &str){ len=str.len; if(p!=NULL) delete []p; //当发生在赋值等情形时,原对象可能已经存在,需要释放原有空间 p=new char[len+1]; strcpy(p,str.p);}String::~String(){ if(!p) delete []p;}void String::display() //输出p所指向的字符串{ cout<<p<<endl;}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; //c1为截去尾部的字符串 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'; //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]; strcpy(s.p,c1); strcat(s.p,c2); delete c1; delete c2; return s;}int main(){ String string1(" C++ is"),string2(" dificult !"); string1.display(); string2.display(); String string3; string3 = string1+string2; string3.display(); string3 = string1-string2; string3.display(); return 0;}
运行结果:
学习总结:字符串的问题是我的弱项,指针成员问题又有点儿乱了,感觉之前学的东西都有些忘了~~~该复习以前的知识了
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类的构造
- Saruman's_Army
- ARM开发板上iconv_open("utf-8", "gb2312") 调用失败的解决方法
- 史上最全选择本地图片和拍照上传,超简单解决获取不到图片问题
- diff patch用法
- CoreData报错:The model used to open the store is incompatible with the one used to create the store
- 第八周项目四--String类的构造
- 路径中 斜杠/和反斜杠\ 的区别
- mysqli_fetch_array() 报错
- android 线程实现异步网络数据获取
- java内存溢出
- 基于XMPP协议的手机多方多端即时通讯方案
- [镜像制作]Ubuntu设置iserver服务开机自启动
- 制作flash动画心得
- python logging的学习