自己寫乙個簡易的string型別

2021-07-16 00:07:42 字數 2177 閱讀 9192

c語言中沒有string型別,於是,在使用c語言的時候,總會用char*型別來替代string型別,但是char*和string型別還是有一定的不同的。最大的差異就是在對字串的操作上。顯然:比起char* ,string對於字串的操作更加的簡便,比如說:

1.兩個string類的變數str1和str2,我只需要寫str1+str2即可完成兩個字串的連線,但是char*就不可以。要用char*型別的話,恐怕還得用strcat函式。

2.兩個string類的變數str1和str2,我寫str1 = str2就可直接把str2值賦給str1,在這點上貌似char*也可以(私下裡試了一下)。

3.兩個string類的變數str1和str2,我用str1>str2,str1本人能力有限,暫時無法一下子就實現string的全部功能,這裡只寫了一部分,請大家多多包涵。為了與string區分開,我將這個自創的string型別命名為mystring。

首先得定義乙個mystring類作為標頭檔案,裡面包含以上這些操作的過載,**如下:

#pragma once

#includeusing std::ostream;

using std::istream;

class mystring;/*

ostream,istream為什麼要用friend?

注意:要實現輸入輸出功能的話,你只能用cout或者cin來實現,而cout和cin並不是mystring類裡的東西

所以你需要用friend使得mystring有權訪問cout和cin。

為什麼operator裡面是兩個引數?cout《以及cin>>中的「cin」和"cout"是三目運算子,所以必須是兩個引數才能實現其功能。

*/

然後,你需要在mystring.cpp檔案中一一實現折現過載函式,不過在寫的過程中我還是遇到了不少問題,這些問題我已經寫在的**當中,等過一陣子我再做解答。**如下:

#pragma warning(disable:4996)

#include#include#include"mystring.h"

mystring::mystring( )

mystring::mystring(const char* str = null)

else }

mystring::mystring(const mystring & other)

mystring::~mystring()

mystring & mystring::operator=(const mystring & other)

else }

mystring & mystring::operator = (const char* str)

mystring mystring::operator+(const mystring & other)

mystring mystring::operator + (const char* other) //如果這裡返回乙個&型別的話,程式執行就會出現異常,為什麼?

bool mystring::operator

else }

bool mystring::operator>(const mystring & other)

else }

bool mystring::operator==(const mystring & other)

else }

int mystring::getlength()

ostream & operator<

istream & operator>> (istream & is, mystring & str)

while (is&&is.get() != '\n')

return is;

}

之後,寫乙個主函式檢驗一下。

#include"mystring.h"

#include#include#includeusing namespace std;

void main()

//打上這個大括號是為了檢驗析構函式是否執行正常。

system("pause");

}

執行結果: 

乙個String類的建簡易實現

其中比較重要的那幾個建構函式和析構函式 如果能夠把ostream的過載寫出來將會更加流弊 class string public string const char str null 建構函式 加分項 以下內容加const很重要 string const string other 拷貝構造 stri...

自己寫的 string 類

現在很多面試題都是要求寫乙個string類,主要檢查big 3,也就是主要檢查建構函式,析構函式和賦值函式.不要告訴我你以為是 姚明,麥蒂,阿泰.這也是很考驗基本功的乙個題目.我今天自己寫了乙個mystring類,順便加上了stradd函式用於字串相加,get函式用於輸出.詳細 如下,說明見注釋.i...

寫乙個自己的簡易版vue

剛到家疫情就開始爆發,恰巧家裡沒有網,手機網路在老家的速度就像拖拉機,每天躲在家裡,還好剛到老家時搞了些口罩,不至於返程時沒有口罩可帶。手機的網路速度到底什麼樣呢,用vue cli建個專案就在那一直install,還有可能中途失敗,哎。沒法練習vue了就把自己寫好的簡易版vue拿出來又擼了擼,還有點...