string常用庫函數 string的庫函數非常多,若全部掌握是非常耗時間的,但是我們只需要掌握常用,重要的庫函數即可,不常用的只需瞭解下即可,需要時,上C++標準官方庫查找。 這裡列舉出本篇說明的函數 insert、erase、swap、c_str、find、rfind、substr、getlin ...
string常用庫函數
string的庫函數非常多,若全部掌握是非常耗時間的,但是我們只需要掌握常用,重要的庫函數即可,不常用的只需瞭解下即可,需要時,上C++標準官方庫查找。
這裡列舉出本篇說明的函數 insert、erase、swap、c_str、find、rfind、substr、getline
一:insert
功能:在pos的位置,插入字元串/字元
返回值:
-
當我們只傳遞值時;該函數返回指向被插入到集合容器中的元素的迭代器。
-
當我們傳遞帶有值的位置時;該函數再次返回指向被插入到集合容器中的元素的迭代器。
-
當我們通過 position_1 和 position_2 時;該函數返回從 position_1 開始到 position_2 結束的範圍之間的一組值
示例:
1 insert(size_t pos, string& str); 2 //在pos位置插入字元串str 3 insert(size_t pos, size_t n, char c); 4 //在pos位置插入n個字元c
1 string s1("Hello World"); 2 cout <<"插入前:"<< s1 << endl; 3 s1.insert(0, "xxx");//在下標為0的位置 插入字元串xxx 4 cout <<"插入後(字元串):"<< s1 << endl; 5 s1.insert(0, 5, 'w');//在下標為0的位置 插入5個字元w 6 cout << "插入後(字元):" << s1 << endl;
insert也支持迭代器
1 s1.insert(s1.begin(), 2, 'o');//在begin的位置(開頭)插入2個字元o 2 cout << "插入後(字元):" << s1 << endl; 3 s1.insert(s1.begin() + 3, 2, 'x');//在begin+3的位置(0+3)插入2個字元x 4 cout << "插入後(字元):" << s1 << endl;
insert的效率不高,因為插入必然要挪到數據
二:erase
功能:刪除字元
1 s1.erase();//不給參數預設全刪 2 cout << "刪除後:" << s1 << endl;
3 s1.erase(s1.begin());//刪除第一個字元(預設從0開始) 4 cout << "刪除後:" << s1 << endl;
5 s1.erase(s1.begin() + 3);//刪除第3個字元(預設從0開始) 6 cout << "刪除後:" << s1 << endl;
7 s1.erase(3, 2);//從第三個字元開始,刪除兩個字元(刪除第三個,第四個) 8 cout << "刪除後:" << s1 << endl;
9 s1.erase(3);//從第三字元開始全刪(包括第三個) 10 cout << "刪除後:" << s1 << endl;
三:swap
功能:交換
swap在std庫里有一個,string里也有一個
區別:
- string庫里的 效率高,交換指針
- std庫里的 效率低 淺拷貝交換
四:c_str
功能 以c語言char類型列印
返回一個指向正規C字元串的指針, 內容與本string串相同
五:find/rfind
功能 查找字元串/字元 返回它的下標(若沒找到返回npos 類型最大值 或者 -1)
cout<<s2.find('H')<<endl;//從s2找字元H 返回它的下標
cout << s2.rfind('o') << endl; //反方向從s2找字元H 返回它的下標
cout << s2.find("ell");//從s2找字元串ell 返回第一個字元的下標
1 cout << s2.rfind("ll") << endl;//反方向從s2找字元串ll 返回它第一個字元的下標
六:substr
功能:取字元
s1.substr(pos,n);//從pos的位置開始(包括pos),取n個字元 (若沒給n的參數,預設取完)
1 cout << s2.substr(1, 2) << endl;//從下標為1的位置開始 取2個字元
1 cout << s2.substr(1) << endl;//從下標為1的位置開始 全部取完
七:getline
功能:讀取數據
與cin相同 同樣是讀取數據
區別:
- cin是流 而getline是函數
- cin的結束標誌是空格 而getline的結束標誌是換行
getline(cin,name)
1 string s3(""); 2 getline(cin, s3); 3 cout << s3 << endl;
這就是本篇的全部內容,如果對您有幫助,希望能獲得您的點贊,您的點贊就是對我的最大支持與動力!