项目4(自己扩充)输出流的自定义
来源:互联网 发布:php 权限管理 数据 编辑:程序博客网 时间:2024/06/05 03:31
/**Corpyright (c)2013,烟台大学计算机学院*All right reseved.*作者:张梦佳*完成日期:2014年4月17日*版本号:v1.0*输入描述:*问题描述:在P324基础上,在String类中增加一个数据成员len表示字符串中字符个数,然后再构造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 ); friend ostream& operator<<(ostream& output,String &s1);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( ){ 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; s.len=s1.len+s2.len; s.p=new char[s.len]; strcpy(s.p,s1.p); strcat(s.p,s2.p); for(int i=s1.len-2;i<s.len-1;i++) { s.p[i]=s.p[i+3]; } return s;}ostream& operator<<(ostream& output,String &s1){ output<<s1.p; return output;}int main( ){ String string1(" Hello "), string2(" World "); cout<<string1<<endl; cout<<string2<<endl; String string3; string3 = string1 + string2; cout<<string3<<endl; string3 = string1 - string2; cout<<string3<<endl; return 0;}
感悟
贺老师,为什么重载输出流要加上ostream参数。。
0 0
- 项目4(自己扩充)输出流的自定义
- 自定义 Unity3d 的Log 输出 (unity自己的Log)
- 【项目4-扩充String类】
- 第十六周项目4 动态数组的扩充
- 第八周项目4-扩充String类
- 第八周项目4扩充string类
- 创建自己的自定义标签,并输出标签中的内容
- tensorflow之扩充自己的图片样本库
- 第八周项目五----string类的扩充
- 输出自己的名字
- C++对C的扩充(1)
- C++对C的扩充(2)
- 自制脚本语言(9) 扩充的语法
- C++第8周(春)项目4 扩充String类
- Linux企业级项目实践之网络爬虫(30)——通过查阅RFC文档扩充更加复杂的功能
- 输出自定义的日期
- 【项目5-扩充String类】
- 自定义自己的Dialog
- nedmalloc内存分配器配置介绍
- java入门学习(十一)
- 运行安卓项目时,没有加载到虚拟机上,如何解决(如何重启ADB)
- Struts2_三种传参数方法
- java 可中断线程
- 项目4(自己扩充)输出流的自定义
- Hibernate @OneToMany的mappedBy和@JoinColumn总结
- mac上搭建openfire服务器
- 字符串类函数的实现
- Tim Sweeney解释为什么Unreal Engine 4全面转向C++
- 多线程复制文件
- JDK、Eclipse、Myeclipse、Tomcat及插件下载、安装及配置方法
- Flex代码格式化工具 Flexformatter插件 安装与使用
- TabHost的使用(一)