String類的模擬實現

2021-10-07 05:32:00 字數 2506 閱讀 3257

#include

#include

using

namespace std;

class

string

iterator end()

const_iterator begin()

const

const_iterator end()

const

string()

:_str

(new

char[16

]),//多餘乙個位置存放'\0'

_size(0

),_capacity(0

)//含參構造

string

(const

char

* str)

//析構函式

~string()

cout <<

"~string"

<< endl;

}//擴容

void

reserve

(size_t n)

}//簡單交換,沒有開空間的操作,只交換成員和資源

void

swap

(string& str)

//拷貝構造:現**法,**復用:建構函式

string

(const string& str)

:_str

(nullptr),

_size(0

),_capacity(0

)//賦值運算子:現**法,**復用:拷貝構造(傳參進行拷貝構造)

string&

operator

=(string str)

//字串有效長度

size_t size()

const

const

char

*c_str()

const

//尾插字元(實際可用insert實現)

void

pushback

(const

char

& ch)

//尾插

_str[_size]

= ch;

//更新size

_size++

; _str[_size]

='\0';}

//尾插字串(實際可用insert實現)

void

(const

char

* str)

//尾插

strcpy

(_str + _size, str)

;//更新size

_size +

= len;

}//+= 尾插字元(實際可用insert實現)

string&

operator+=

(const

char

& ch)

//+= 尾插字串(實際可用insert實現)

string&

operator+=

(const

char

* str)

//任意位置插入字元

void

insert

(size_t pos,

const

char

& ch)

//移動元素[pos,_size]:從後向前移動,首先移動最右端的字元,防止覆蓋

size_t end = _size +1;

//end >= pos:當pos = 0時,會死迴圈,訪問越界

while

(end > pos)

//插入

_str[pos]

= ch;

_size++;}

//任意位置插入字串

void

insert

(size_t pos,

const

char

* str)

int len =

strlen

(str)

;//檢查容量

if(_size + len > _capacity)

//移動元素[pos,_size]:從前向後移動,首先移動最右端字元,防止覆蓋

size_t end = _size + len;

while

(end > pos + len -1)

//插入

for(

int i =

0; i < len; i++

)//更新size

_size +

= len;}}

//迭代器遍歷:可讀可寫操作

void

eprintfstring

(string& str)

cout << endl;

}//迭代器遍歷:唯讀操作

void

printfstring

(const string& str)

cout << endl;

}

模擬實現string類

include using namespace std include class string string string a 2 為什麼要用 優點在哪 string void print string operator const string a string operator const s...

模擬實現string類

在c 中,string其實就是將字串封裝起來的類,呼叫類中的成員函式可以完成對類內的字串進行增刪查改,並且將操作符過載,可以更直觀的操作字串,省去了c語言中很多麻煩的操作,有現成的成員函式供我們使用。舉乙個簡單的例子 在c語言中要在一串字串的尾部拼接另乙個字串,我們需要做的事情就是定義兩個字串,要使...

string類模擬實現

define crt secure no warnings include include using namespace std class string iterator end const iterator begin const const iterator end const 無參建構函式...