string類的模擬實現

2021-09-10 05:29:59 字數 4374 閱讀 3883

說明:有些函式返回的是string&(引用),有些是string(值),這取決於返回的物件是函式的區域性變數還是全域性變數。

string.hpp

#include

#include

#include

using

namespace std;

class

string

string

(const string& s)

:_size

(s._size)

,_capacity

(s._capacity)

void

swap

(string& s)

; string&

operator

=(string s);~

string()

}void

show()

;const

char

*c_str()

;//獲取string類中的c風格字串

const

char

&operator

(size_t index)

const

;//括號運算子

void

expand

(size_t n)

;//擴容

void

pushback

(char c)

;//插入乙個字元

void

pushback

(const

char

* str)

;//插入乙個字串

void

popback()

;//尾部刪除乙個字元

void

insert

(size_t pos,

char c)

;//pos位置插入乙個字元

void

insert

(size_t pos,

const

char

* str)

;//pos位置插入乙個字串

void

erase

(size_t pos, size_t n =1)

;//在pos位置刪除n個字串

size_t find

(char c)

;//返回string物件中第一次出現字元c的下標

size_t find

(const

char

* str)

;//返回string物件中第一次出現str的下標

string operator+(

char c)

; string&

operator+=

(char c)

; string operator+(

const

char

* str)

; string&

operator+=

(const

char

* str)

;bool

operator

>

(const string& s)

;bool

operator

>=

(const string& s)

;bool

operator

<

(const string& s)

;bool

operator

<=

(const string& s)

;bool

operator==(

const string& s)

;bool

operator!=(

const string& s)

;private

:char

* _str;

size_t _size;

size_t _capacity;

};

string.cpp

void string::

show()

void string::

swap

(string& s)

string& string::

operator

=(string s)

const

char

* string::

c_str()

void string::

expand

(size_t n)

void string::

pushback

(char c)

void string::

pushback

(const

char

* str)

void string::

insert

(size_t pos,

char c)

for(

int i = _size; i > pos; i--

) _str[pos]

= c;

++_size;

}void string::

insert

(size_t pos,

const

char

* str)

if(_capacity < _size + size)

for(

int i = _size; i >= pos; i--

)int i =0;

while(*

(str + i)

!='\0'

) _size = _size + size;

}void string::

popback()

void string::

erase

(size_t pos, size_t n)if(

0== n)

assert

(pos <= _size)

;while

((pos + n)

<= _capacity)

if(_size - n >0)

else

_str[_size]=0

;}size_t string::

find

(char c)

}return

(size_t)-1

;}size_t string::

find

(const

char

* str)

cur++

; _fast++;}

if(*cur ==

'\0')}

_slow++

; cur = str;

}return

(size_t)-1

;}string string::

operator+(

char c)

string& string::

operator+=

(char c)

string string::

operator+(

const

char

* str)

string& string::

operator+=

(const

char

* str)

bool string::

operator

>

(const string& s)if(

*_tmp >

*tmp)

else

}bool string::

operator

>=

(const string& s)

return

false;}

bool string::

operator

<

(const string& s)if(

*_tmp <

*tmp)

return

false;}

bool string::

operator

<=

(const string& s)

else

}bool string::

operator==(

const string& s)

tmp++

; _tmp++;}

return

false;}

bool string::

operator!=(

const string& s)

return

false

;}

模擬實現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 無參建構函式...