string類的模擬實現

2021-09-29 15:49:44 字數 2487 閱讀 5719

class

string

//放n個字元ch的元素(構造)

string

(size_t n,

char ch)

:_str

(new

char

[n+1])

,_size

(n),

_capacity

(n)//拷貝建構函式

string

(const string& s)

:_size

(s._size)

,_capacity

(s._size)

//賦值運算子過載

string&

operator=(

const string& s)

return

*this;}

//析構函式

~string()

}//iterator迭代器

iterator begin()

iterator end()

//modify

//插入元素

void

pushback

(char c)

//+=過載

//追加單個字元

string&

operator+=

(char ch)

//追加字串

string&

operator+=

(const

char

* str)

strcat

(_str, str)

; _size = newsize;

return

*this;}

//+=乙個類型別物件

string&

operator+=

(const string& s)

//清除

void

clear()

//交換

void

swap

(string& s)

//acess

//下標運算子過載,訪問任意位置元素

char

&operator

(size_t index)

//const型別下標運算子過載,訪問任意位置元素

const

char

&operator

(size_t index)

const

//capacity

//有多少個有效字元

size_t size()

const

//底層容量的大小

size_t capacity()

const

//判斷string是不是空

bool

empty()

const

//改變當前string類的有效元素個數

void

resize

(size_t newsize,

char ch =

char()

)memset

(_str + _size, ch, newsize - oldsize);}

_size = newsize;

_str[_size]

='\0';}

//擴容

void

reserve

(size_t newcapacity)

}//獲取c格式的字串

const

char

*c_str()

const

//從頭開始查詢元素

size_t find

(char ch)

return npos;

}//從後面開始查詢元素

size_t rfind

(char ch)

return npos;

}//獲取子串

string substr

(size_t pos =

0, size_t n = npos)

friend ostream&

operator

<<

(ostream&_cout,

const string& s)

private

:char

* _str;

size_t _capacity;

size_t _size;

static size_t npos;};

size_t string::npos =

0;

測試:

void

testbitstring()

cout << endl;

//範圍for

for(

auto ch : s1)

cout << ch <<

" ";

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 無參建構函式...