运算符重载string运算符.docx_第1页
运算符重载string运算符.docx_第2页
运算符重载string运算符.docx_第3页
运算符重载string运算符.docx_第4页
运算符重载string运算符.docx_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

运算符重载#include#includeFunnyString.husing std:istream; using std:ostream; using std:string; using std:cout; using std:cin;using std:endl;int main()FunnyString string1,string2; coutstring1;coutstring2; cout未进行s1-=s2运算时的s1 * s2 is string1*string2; coutns1 + s2 is string1+string2;coutns1 - s2 is string1-string2;coutns1+= s2 is (string1+=string2);coutns1 -= s2 is (string1-=string2);/老师,题目中写道:s1+= s2 is abcabf s1 -= s2 is c s1 * s2 is adbacbdf coutn进行s1-=s2运算后的s1 * s2 is string1*string2n; /但是-=后s1的只有一个c了,乘以s2后是不是应为cdabf。return 0;#include using std:istream; using std:ostream; using std:string; using std:cout; using std:cin;using std:endl;#includeFunnyString.hvoid FunnyString:setFunnyString( const char * a) sPtr=new char length+1;if ( a!=0)strcpy(sPtr,a);elsesPtr0=0;FunnyString:FunnyString( const char *first):length(first!=0)?strlen(first):0)setFunnyString(first);FunnyString:FunnyString( const FunnyString &a)length=a.length;sPtr=new charlength+1;for(int i=0;ilength;i+)sPtri=a.sPtri;int FunnyString:getLength() constreturn length;FunnyString:FunnyString()delete sPtr; ostream &operator( ostream &output, const FunnyString &a ) for (int i=0;ia.length;i+) output( istream &input, FunnyString &a) char b100; inputb; a.length=strlen(b); delete a.sPtr; a.sPtr=new char a.length+1; for (int i=0;istrlen(b);i+) a.sPtri=bi; return input; const FunnyString &FunnyString:operator= (const FunnyString &a) if (&a != this) delete sPtr; length=a.length; setFunnyString(a.sPtr); return *this; else return *this; const FunnyString &FunnyString:operator+=( const FunnyString &a ) FunnyString c;c=*this+a;*this=c;return *this; const FunnyString &FunnyString:operator-=( const FunnyString &a ) FunnyString c;c=*this-a;*this=c;return *this; const FunnyString operator+(const FunnyString &left,const FunnyString &right) int len=left.length+right.length; char *a=new char len+1; a1=left.sPtr1; for (int i=0;ileft.length;i+) ai=left.sPtri; len=left.length; int j; for ( j=0;jright.length;j+) if(len!=0) if (left.sPtrlen-1=right.sPtrj) len-; else j+; break; else j+; break; j-; if (jright.length-1) for (;jright.length;j+) len+; alen-1=right.sPtrj; alen=0; FunnyString c(a); delete a; return c; const FunnyString operator-(const FunnyString &left,const FunnyString &right) char *a=new char left.length+1; int len=left.length; for (int i=0;ileft.length;i+) ai=left.sPtri; for (int j=0;jright.length;j+) for (int p=0;pleft.length;p+) if (ap=right.sPtrj) ap=0; for (int s=0;sleft.length;s+) if (as=0) int q=s; for(;qleft.length;q+) aq=aq+1; len-; s-; alen=0; FunnyString c(a); delete a; return c; const FunnyString operator*(const FunnyString &left,const FunnyString &right)char *a=new char left.length+right.length+1;int min;if (left.lengthright.length)min=left.length;elsemin=right.length;for (int i=0;imin;i+)a2*i=left.sPtri;a2*i+1=right.sPtri;if (left.lengthright.length)for (int j=min;jright.length;j+)amin+j=right.sPtrj;elsefor (int j=min;jleft.length;j+)amin+j=left.sPtrj;aleft.length+right.length=0;FunnyString c(a);delete a;return c;#ifndef FUNNYSTRING_H#define FUNNYSTRING_H#include #includeusing std:istream; using std:ostream; using std:string; using std:cout; using std:cin;using std:endl;class FunnyString friend ostream &operator( istream &, FunnyString &); friend const FunnyString operator+(const FunnyString &,const FunnyString &); friend const FunnyString operator-(const FunnyString &,const FunnyString &); friend const FunnyString operator*(const FunnyString &,const FunnyString &); public: FunnyString( const char * = ); FunnyString( const FunnyString & ); FunnyString(); const FunnyString &operator+=( const FunnyString & ); const FunnyStr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论