string類常用介面簡介與簡單模擬實現

2021-10-25 01:45:54 字數 4004 閱讀 9242

string類是c++中常用的乙個針對字串管理所設計的的字串類

1.常見的string類構造介面

string()

//構造乙個空的string類物件

string

(const

char

* s)

//以c格式的字串,來構造出乙個string類物件

string

(size_t n,

char c)

//用n個字元c來構造乙個string類物件

string

(const string& s)

//拷貝構造

string

(const string& s,pos n)

//從物件s的位置n起拷貝構造出新的string類物件

用法示例

int

main()

2.string類物件的容量操作函式

size_t size()

const

//返回字串有效長度

size_t length()

const

//同上 //size與length原理相同

size_t capacity()

const

//返回物件空間大小

bool empty()

const

//判空,空返回true即(1),非空返回false(0)

void

clear()

//清空有效字元//但不改變其空間大小

void

resize

(size_t n,

char c)

//將物件的有效字串個數改為n個,剩餘的用字元c填充

void

resize

(size_t n)

//同上,但剩餘個數使用0進行填充

void

reserve

(size_t n)

//為物件預留空間

注意:

1.resize在改變物件有效個數時,如果是將有效元素個數增大,有可能導致物件底層容量(即capacity)的增大,但若將有效元素減少,則不會不會引起容量的變化。

2.reserve為物件預留空間時,不會改變物件的有效個數。當其引數大於原空間時會擴容至引數大小,但因為考慮到記憶體對齊,其實際可能比引數要大上一點,如果是一點一點的增加物件的有效個數所導致的增容,reserve大概會按1.5倍的方式進行增容;當引數小於原空間大小時,則不會改變物件容量大小。

3.訪問操作

char

& operator[

](size_t pos)

//返回物件pos位置處的字元,非const物件呼叫

const

char

& operator[

](size_t pos)

const

//同上,const物件呼叫

用法示例

//一般會用在遍歷字串中

intmain()

cout

//底層會被替換為迭代器

for(

auto ch : s)

cout << endl;

//迭代器遍歷

//string::reverse_iterator //反向迭代器

//string::const_reverse_iterator //反向const迭代器

string:

:iterator it = s.

begin()

;while

(it != s.

end())

cout << endl;

return0;

}

4.修改操作

void

push_back

(char c)

//尾插字元c

string&

(const

char

* s)

//追加乙個字串s

string& operator+=(

const string& str)

//追加乙個string類物件str

string& operator+=(

const

char

* str)

//追加乙個字串

string& operator+=(

char c)

//追加字元c

const

char

*c_str()

const

//返回c格式的字串

size_t find

(char c,size_t pos=0)

//從pos位置開始找字元c,不給pos預設從開始找,返回c的位置

size_t rfind

(char c,size_t pos=npos)

//從pos位置開始往前找字元c,並返回其位置,npos為字串最後乙個位置,也就是說其預設從最後乙個開始找

string substr

(size_t pos=

0,size_t n=npos)

const

//從pos位置開始,往後擷取n個字元,然後返回//預設從pos位置開始往後擷取完字串為止

string erase

(size_t begin,size_t end)

//刪除字串[begin,end]位置之間的元素,並返回刪除之後的字串

注意:

1.對string物件進行操作時,最好將其空間用resere()預留好,以防止增容帶來的不必要開銷。

2.對string物件追加字串或字元時,推薦使用+=,可讀性高,功能齊全。

//find(),substr()的用例示範

intmain()

5.string類的非成員函式

operator>>

//輸入運算子過載

operator<<

//輸出運算子過載

getline //獲取一行字串,遇到空格不結束,換行結束

relational operators //大小比較

實現前首先要了解,string類物件中儲存的是指標,在指標指向的陣列中儲存字元,要保證字元的結尾必須有』\0』的存在。

以下對其構造,拷貝構造,賦值運算子過載和析構函式的簡單實現。

class

my_string

_str =

newchar

[strlen

(str)+1

];//上倆句保證讓string(nullptr),也能構造出乙個空物件

strcpy

(_str, str);}

//拷貝構造

string

(const string& s)

:_str

(new

char

[strlen

(s._str)+1

])//賦值運算子過載

string&

operator=(

const string& s)

return

*this;}

//析構

~string()

}private

:char

* _str;

}

測試:

int

main()

String類函式簡講

1.構造 b string s str 拷貝建構函式 生成str的複製品 c string s str,stridx 將字串str內 始於位置stridx 的部分當作字串的初值 d string s str,stridx,strlen 將字串str內 始於stridx且長度頂多strlen 的部分作...

常用類 String類

string類概述 字串是由多個字元組成的一串資料 字串行 字串可以看成是字元陣列 構造方法 public string public string byte bytes public string byte bytes,int offset,int length public string cha...

String常用介面 find,replace

findsize t find const string str,size t pos 0 const 從字串string的pos位置,開始查詢子串,返回子串第一次出現的首字元位置,沒有找到的話返回string npos int main 結果 13size t find char c,size t...