C++語言string類的實現(xiàn)(完整源代碼)_第1頁
C++語言string類的實現(xiàn)(完整源代碼)_第2頁
C++語言string類的實現(xiàn)(完整源代碼)_第3頁
C++語言string類的實現(xiàn)(完整源代碼)_第4頁
C++語言string類的實現(xiàn)(完整源代碼)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、MyString類主整源代碼MyString. h 文件丄">'“ >kAx7"."7">7" >彳J哼.十.十.哼Jr* *T吟、吟、*r* 斤哼.T*/Copyright (c) 2013 道合 | Sameidea 1 com All rights reserved.K %丄. 丄. 丄.、丄"=".、.7丁IJ"1 .J*7 * T* bj'J*|g、*7i *g "4、,,.、 J、.、 :、,.、 j、*.*T *Tttifndef MYSTRING d

2、efine MYSTRING_H include <iostream> using namespace std;class MyString public:構(gòu)造函數(shù)MyStringO;MyString(const MyString&);MyString (const char*):MyString(const size_t, const char);析構(gòu)函數(shù)"MyString ();屬性size_t length() :/字符串的長度bool empty () ;/字符串是否為空const char* c_str () :/返回C風(fēng)格字符串的指針讀寫操作符frie

3、nd ostream& operator<< (ostream&, const MyString&);friend istream& operator>> (istream&, MyString&);/'+'操作符friend MyString operator+(const MyString&, const MyString&);比較操作符friend friend friend friend friend friendbool bool bool bool bool booloperat

4、or=(const MyString&, const MyString&); operator! = (const MyString&, const MyString&); operator<(const MyString&, const MyString&); operator<= (const MyString&, const MyString&); operator> (const MyString&, const MyString&); operator>=(const MyStri

5、ng&, const MyString&);下標(biāo)操作符char& operator (const size_t);const char& operator (const size_t)const:賦值操作符MyString& operator二(const MyString&): '+J操作符MyString& operator+二(const MyString&);子串操作MyString substr(size_t, size_t);添加操作MyString& append (const MyString&am

6、p;);/插入操作MyString& insert(size_t, const MyString&);替換操作一MyString& assign (const MyString&,size_t, size_t);刪除操作MyString& erase(size_t, size_t):private:size_t strLength; char* p_str;; _ ttendifMyString. cpp 文件I" I"V"I" xtx I" I" I" I" mL#刁.T*

7、 "7*鳴."T* 哼."T* 略."A"卜"7/Copyright (c) 2013 道合 | Sameidea 1. com All rights reserved.£“ " 匕* "" "】". .丄"丄* '“ J"丄*J.、' 丄* .丄* J" J.*1* Y" > :* " >吟J#include '"MyString h" ttinclude <ca

8、ssert>MyString:MyString():strLength(0), p_str(NULL)MyString::MyString(const MyString& str) strLength = str strLength; p_str = new charstrLength+1; strcpy(p_str, str p_str); 一 一MyString::MyString(const char* str) 辻(str二二NULL)return;strLength = strlen(str); p_str = new charstrLength+1: strcpy(p

9、_str, str);MyString::MyString (const size_t len,const char ch)strLength = len;p_str = new charstrLength+1;*(P_str+strLength)二'0 ; strset(p_str, ch); 一MyString: :'MyStringOdeletej p_str; "size_t MyString: length ()"return strLength;bool MyString:empty()return strLength0?true: false;

10、const char* MyString:c_str() "return p_str; /輸出操作符ostream& operator<< (ostream& out,const MyString& str) 辻(str. p_str! =NULL) out«str p_str;return out:/輸入操作符istream& operator>>(istream& in, MyString& str) /char tempLlOO ;/臨時字符串?dāng)?shù)組 if(in>>temp)delete

11、 str p_str;str.strLength 二 strlen(temp):strp_str = new charstr.strLength+1; strcpy(str p_str, temp); return in;下標(biāo)操作符char& MyString::operator (const size_t index) "assert (index>=0 && index<=strLength); return p_strindex; 一下標(biāo)操作符(const情況) const char& MyString::operator (cons

12、t size_t index)const "assert(index>=0 && index<=strLength); return p_strindex: "/r +'操作符的巫載MyString operator+ (const MyString& lhs,const MyString& rhs) MyString ret;ret. strLength 二 lhs strLength + rhs. strLength;ret. p_str = new charret. strLength+1: strcpy(ret.

13、p_str, lhs p_str);strcat(ret. p_str, rhs p_str);return ret:賦值操作符MyString& MyString::operator=(const MyString& str)if (this!=&str)if(strLength<str strLength) delete p_str;p_str = new charstrstrLength+1; "strLength = str strLength; strcpy(p_str, str p_str); 一 一return *this:/r v操作符M

14、yString& MyString:operator+= (const MyString& str)if(this = &str)MyString copy(str); return *this+二copy;strLength += str.strLength;char* p_old = p_str; p_str = new charstrLength+1: strcpy(p_str, p_old); delete p_old; strcat(p_str, str p_str); return *this;比較操作符bool operator=(const MyStri

15、ng& lhs, const MyString& rhs) return strcmp (lhs. p_str, rhs. p_str)二二0; " "bool operator! = (const MyString& lhs, const MyString& rhs) return strcmp(lhs. p_str, rhs. p_str)!=0; " "bool operator<(const MyString& lhs, const MyString& rhs)return strcmp(lh

16、s. p_str, rhs. p_str)<0; " "bool operator<=(const MyString& lhs, const MyString& rhs) return strcmp(lhs. p_str, rhs p_str)<=0; 一 "bool operator>(const MyString& lhs, const MyString& rhs)return strcmp(lhs. p_str, rhs. p_str)>0; 一 "bool operator>=(

17、const MyString& lhs, const MyString& rhs) return strcmp(lhs. p_str, rhs. p_str) >=0; " 子串操作返回一個MyString類型的字符串,它包含源字符串中從下標(biāo)pos開始的n個 字符MyString MyString::substr(size_t pos, size_t n) "assert(pos+n二strLength);MyString ret;ret.strLength = n;ret. p_str = new charret. strLength+1;for (

18、size_t i=0;i!=n;+i)ret i = (*this) pos+i;ret n=,0'return ret:添加操作將一個字符串的副本添加到源字符串的木尾,同“+二”操作符類似MyString& MyString:append(const MyString& str)*this+=str;return *this;插入操作/在下標(biāo)為pos的元素之前插入MyString對象str的副本MyString& MyString:insert(size_t pos,const MyString& str) "assert (pos<strLength);char* p_old = p_str;strLength +=str strLength;p_str = new charstrLength+1;for (size_t i=0;i!=pos;+i)*(p_str+i) = *(p_old+i);for(size_t i=pos;i!=str strLength+pos:+i)*(p_str+i) = *(strp_str+i-pos);for(size_t i二str strLength+pos;i!二strLength;+i)*(p_str+i) =

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論