/* * Copyright (c) 2013, 煙台大學電腦學院 * All rights reserved. * 檔案名稱:text.cpp * 作者:胡穎 * 完成日期:2013年5月6日 * 版本號碼:v1.0 * * 輸入描述:無 * 問題描述:字元的加減重載* 程式輸出:輸出處理後的字串 * 問題分析: * 演算法設計:略 */ #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; p=new char[len+1]; strcpy(p,str.p);}String::~String(){ if(!p) delete []p;}void String::display(){ cout<<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; 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'; 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+1]='\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("hello"),string2("world"); string1.display(); cout<<endl; String string3; string3=string1+string2; string3.display(); return 0;}
運行結果:
心得體會:雖然有些還是不太明白,但是先把這程式背下來了,相信會慢慢懂得