string類

STL:c++標準模板庫,對常見的數據結構進行封裝,包含一些通用類型的算法。

string類:
一、構造(常用四個)
string()
string(const string & str)拷貝
string(const char *)C風格
string(size_t n, char c)單個字符賦值n次

string s1;
string s2;
s1= "hello";
s2 = '!';
string s3;
s3 = s1 + s2;
s3爲hello!

二、迭代器(返回值是iterator類型)
1.begin
2.end
定義迭代器時auto it=s.begin();---->對it解引用即s中的元素

三、容器
1.size:計算s中的有效元素的個數--->不算\0
2.resize:改變有效元素個數
①resize(size_t n);
②resize(size_t n,char c);
可以增加或減少size的個數,使用這個函數增加size個數的時候如果超過capacity也會相應的增加capacity的個數,減小時size減小但capacity不變。
3.reserve:改變capacity的大小

reserve(size_t n);若不傳參數則不會發生改變,傳入的是新容量。

擴容時---->最終容量≥新容量,這是編譯器完成擴容的機制,vs下擴容到1.5倍,linux下擴容到2倍。
縮容時---->不改變最終容量直接返回,除非新容量小於15則把最終容量改爲15,因爲擴容時一個複雜的事情(動態申請空間並維護)所以一般不輕易縮小容量的大小。

reserve的作用:提高代碼效率,在已知元素個數的情況下擴容到目標大小,省去重複的空間開闢操作。

四、修改
1.push_back(char c),在字符串後尾加一個字符
2.append()在一個字符串後追加一個字符串
3.+= 追加字符串str
4.c_str() 返回c格式字符串
5.find() 在字符串中查找字符或字符串,也可以定義從第幾個位置開始找
6.refind() 反向查找,同find原理

find和rfind找到都會返回位置,找不到返回靜態成員變量npos(-1)
7.substr(pos,n)在str中從pos位置開始,截取n個字符,然後將其返回,返回值也是一個string類類型

8.getline()獲取一行字符串
getline (cin,name);name是變量名

9.swap()參數是兩個類名,進行交換

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章