第八周--运算符重载-String类的构造
来源:互联网 发布:linux中搭建ftp服务器 编辑:程序博客网 时间:2024/06/06 15:35
/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:刘畅 * 完成日期:2015 年 4 月 27 日 * 版 本 号:v1.0 * * 问题描述:写一个能处理字符串的类。 请构造String类的加、减运算。 其中,s1 + s2将两个字符串的连接起来; s1 - s2是将s1的尾部空格和s2的前导空格去除后的连接 * 输入描述: ;* 程序输出: 按要求输出。
代码如下:
#include <iostream>#include <cstring>using namespace std;class String{public: String() { p=NULL; len=0; } String (const char *c); String (const String &s); void display(); ~String(); friend String operator+(String &s1,String &s2); friend String operator-(String &s1,String &s2);private: char *p; int len;};String::String(const char *c){ len=strlen(c); p=new char[len+1]; strcpy(p,c);}String::String(const String &s){ len=s.len; if (p!=NULL) delete []p; p = new char[len+1]; strcpy(p,s.p);}void String::display(){ cout<<p<<endl;}String::~String(){ if (!p) delete []p;}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-2; s.p=new char[s.len+1]; strcpy(s.p,s1.p); int i=s1.len-1; while(i>=0&&s.p[i]==' ') --i; s.p[i+1]='\0'; i=0; while(i<s2.len&&s2.p[i]==' ') ++i; int j=0; while(i<s2.len&&s2.p[i]!='\0') { s2.p[j]=s2.p[i]; ++i; ++j; } s2.p[j+1]='\0'; strcat(s.p,s2.p); return s;}int main(){ String s1(" NOT "),s2(" AFRAID! "),s3; s1.display(); s2.display(); s3=s1+s2; s3.display(); s3=s1-s2; s3.display();}
运行结果:
学习心得:
这次虽然是看过了贺老的博客后再自己写的,虽然很多地方相同,但是保证不再是抄之无道了,理解了题目的意思,掌握了用法。
发现自己没有老师的架构真的不知道如何去写类和main函数内的内容。
0 0
- 第八周--运算符重载-String类的构造
- 第八周项目四 【炒鸡难!!高能预警!】String类的构造(重载双目运算符)
- 第八周项目四 String类中的运算符重载
- 第八周 运算符的重载
- 第八周项目一-复数类的运算符重载
- 第八周项目2-Time类的运算符重载
- 第八周项目1复数类运算符的重载
- 第八周-运算符重载--实现复数类中的运算符重载-完整的类
- String类的构造函数、析构函数、拷贝构造函数、赋值运算符重载
- c++中,一个没有拷贝构造函数和重载=运算符的string类,
- string类的实现(构造函数,析构函数,运算符重载)
- 类string运算符的重载
- string类的运算符重载
- 第八周-运算符重载-实现复数类中的运算符重载(1)-类的成员函数
- 十九、运算符重载(三)String类的改进实现、[]运算符重载、+运算符重载、+=运算符重载、<<运算符重载、>>运算符重载
- 第八周实验任务2--实现Time类中的运算符重载 --并对运算符的重载进行测试
- 第八周-运算符重载-分数类的运算符重载(1)-加减乘除以及大小比较
- 第八周 项目2-Time类中的运算符重载之二目比较运算符的重载
- 软件定义数据中心浅见
- ldd 查看程序依赖库
- JVM入门介绍的一些文章
- URL中文传参
- IP地址判断有效性
- 第八周--运算符重载-String类的构造
- Web开发笔记 Spring IOC原理
- Code HDU 5212(容斥原理)
- Eclipse Juno版缺少marketPlace解决方案
- java.util.Properties类
- jackson 学习笔记
- STL学习记录(二):迭代器简要
- HTML 符号实体 URL说明 超链接 发送邮件
- 杭电1256——画8