c string類的完整實現!!!

2021-09-09 04:31:03 字數 1644 閱讀 6401

本文實現了c++ stl中的basic_string模板類,當然。通過typedef也就實現了string類和wstring類。限於篇幅,實現**中用到了標準庫的char_traits模板類,本人自己也實現了

char_traits模板類,為此還寫了一篇部落格,在我的部落格裡能夠找到,那裡的**全然能夠用在這裡的basic_string類的實現中,當然,詳細加到**中要稍加修改,以和與basic_string類相關的全域性模板函式相容,如operator >> 模板函式的過載。

經過測試。這裡的是實如今效率上不輸標準庫(與vs2012比對),**凝視還算清晰,並且具有良好的擴充性。能夠以此量身打造自己的精簡版本號string。

好了。廢話不多說了!看**!

還請高手們指教!!!

此檔案我建議命名為local_string.h。還是我一慣的習慣,封裝於名字空間mystd中。

假設要測試**,直接複製以下的**就能夠了,都在乙個檔案裡。

標準庫有的功能。這裡基本上都有!

/*

*看完《stl源**剖析》後就有重寫stl的衝動,這個basic_string的實現還算完整。

標準庫有的功能,這裡基本都有,假設有須要,能夠在此基礎上擴充套件功能。!

以下是乙個簡單的測試程式!

並和標準庫比對執行結果!以驗證正確性。

#include#include#include//clock

#include"local_string.h"

#define std mystd //改為std能夠執行標準庫版本號

//測試可知。結果與標準庫的執行結果一樣

using std::cout;

using std::wcout;

using std::cin;

using std::wcin;

using std::endl;

int main()

{ // 下面是一些測試**!

std::string str;

str = "abcdefghijk"; //11 個字元長度

clock_t start = clock();

//之所以選擇在首部進行插入操作。是為了測試在極端條件下的執行效率。

for(int i = 0; i < 25; ++i)

str.insert(0,str);

//完畢迴圈後。str會變得非常大,大小為 11乘以2的25次方 ,結果為369,098,752個字元長度

clock_t finish = clock();

/* mystd | std

--------------|--------------------

0.348 | 0.435

0.366 | 0.446

0.359 | 0.47

0.392 | 0.46

0.374 | 0.445

能夠看到,我的實現版本號比標準庫略快!

宣告:我的機器是win8系統,vs2012

*/ cout<

望高手批評指正!

!謝謝!

C String類的實現

參考c primer.string類的實現,清翔兔 06,jan.include using namespace std class string string void private char m data inline string string const char str if str m...

C String類的實現

include using namespace std class string string void private char m data inline string string const char str inline string string const string other i...

c string類的實現

友元函式可以轉換左右運算元的順序,而成員函式必須保證左運算元string已經處於正確的形式。include include includeusing namespace std class string friend const string operator const string other1...