一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

stl之string類用法詳細(xì)總結(jié)

 古風(fēng)銀漢 2020-05-26

標(biāo)準(zhǔn)c++中String類非常強(qiáng)大,合理使用,能極大提高編程效率,下面就對string類的用法進(jìn)行總結(jié)。

頭文件

#include<string>

String類的構(gòu)造函數(shù)如下:

1)    string s; //生成一個空字符串s

2)    string s(str) //拷貝構(gòu)造函數(shù)生成str的復(fù)制品

3)    string s(str,index) //將字符串str內(nèi)始于位置index”的部分當(dāng)作字符串的初值

4)    string s(str,index, n) //將字符串str內(nèi)始于index且長度頂多n”的部分作為字符串的初值

5)    string s(cstr) //C字符串作為s的初值

6)    string s(chars,chars_len) //C字符串前chars_len個字符作為字符串s的初值。

7)    string s(n,c) //生成一個字符串,包含nc字符

8)    string s(str.begin(),str.end()) //以區(qū)間begin():end() (不包含end())內(nèi)的字符作為字符串s的初值

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main ()
  5. {
  6. //定義
  7. string s0 ("abcdefghijklmn");
  8. string s1;
  9. string s2 (s0);
  10. string s3(s0,3);
  11. string s4 (s0,3, 4);
  12. string s5 ("let us learn string");
  13. string s6 ("let us learn string",6);
  14. string s7 (10, 'x');
  15. string s8 (s0.begin(), s0.begin()+7);
  16. //輸出
  17. cout << "s1: " << s1 << "\ns2: " << s2 << "\ns3: " << s3;
  18. cout << "\ns4: " << s4 << "\ns5: " << s5 << "\ns6: " << s6;
  19. cout << "\ns7: " << s7 << "\ns8: " << s8 << '\n';
  20. return 0;
  21. }

String類常用的操作函數(shù)

之后會對相關(guān)函數(shù)進(jìn)行講解,如果不想將下面操作函數(shù)全部看完,大伙可以找自己感興趣的函數(shù)看。

1) =,assign()   //賦以新值

2) swap()   //交換兩個字符串的內(nèi)容

3)+=,append(),push_back() //在尾部添加字符

4) insert() //插入字符

5) erase() //刪除字符

6) clear() //刪除全部字符

7) replace() //替換字符

8) + //串聯(lián)字符串

9)==,!=,<,<=,>,>=,compare()  //比較字符串

10)size(),length()  //返回字符數(shù)量

11) max_size() //返回字符的可能最大個數(shù)

12) empty()  //判斷字符串是否為空

13) capacity() //返回重新分配之前的字符容量

14) reserve() //保留一定量內(nèi)存以容納一定數(shù)量的字符

15) [ ], at() //存取單一字符

16)>>,getline() //stream讀取某值

17) <<  //將謀值寫入stream

18) copy() //將某值賦值為一個C_string

19) c_str() //將內(nèi)容以C_string返回

20) data() //將內(nèi)容以字符數(shù)組形式返回

21) substr() //返回某個子字符串

22)查找函數(shù)

23)begin() end() //提供類似STL的迭代器支持

24) rbegin() rend() //逆向迭代器

25) get_allocator() //返回配置器

字符串添加

  1. #include <string>
  2. #include <iostream>
  3. using namespace std;
  4. int main(void)
  5. {
  6. string s1;
  7. //尾部插入字符
  8. s1.push_back('a');
  9. s1.push_back('b');
  10. s1.push_back('c');
  11. cout << "打印s1: " << s1 << endl;
  12. char* cArray="efgh";
  13. string s2(cArray);
  14. cout << "打印s2: " << s2 << endl;
  15. //字符串的"+"操作
  16. cout << "打印s1+s2: " << s1 + s2 << endl;
  17. //字符串s1后添加字符串s2
  18. cout << "append后,打印s1: " << s1.append(s2) << endl;
  19. //在s1的第個字符位置前插入字符'8'
  20. s1.insert(s1.begin()+1,'8');
  21. cout << "insert后,打印s1: " << s1 << endl;
  22. //字符串的"+="操作
  23. s1+=s2;
  24. cout << "s1+=s2后,打印s1: " << s1 << endl;
  25. return 0;
  26. }


字符的遍歷

  1. #include <string>
  2. #include <iostream>
  3. using namespace std;
  4. int main(void)
  5. {
  6. char* cArray="hello, world!";
  7. string s(cArray);
  8. //數(shù)組方式
  9. for(unsigned int j=0; j< s.size(); j++)
  10. cout << "第" << j << "個字符: " << s[j] << endl;
  11. //迭代器方式
  12. string::reverse_iterator ri;
  13. cout << "反向打印字符" << endl;
  14. for(ri=s.rbegin(); ri!=s.rend(); ri++)
  15. cout << *ri << ' ' ;
  16. cout << endl;
  17. return 0;
  18. }


字符的刪除

1)iterator erase(iterator p);//刪除字符串中p所指的字符

2)iterator erase(iterator first, iterator last);//刪除字符串中迭代器

區(qū)間[first,last)上所有字符

3)string& erase(size_t pos = 0, size_t len = npos);//刪除字符串中從索引

位置pos開始的len個字符

4)void clear();//刪除字符串中所有字符

  1. #include <string>
  2. #include <iostream>
  3. using namespace std;
  4. int main(void)
  5. {
  6. string s("12345678a");
  7. s.erase(s.begin());
  8. cout << s << endl; //打印出:a
  9. s.erase(s.begin()+3, s.end()-2);
  10. cout << s << endl; //打印出:a
  11. s.erase(0,2);
  12. cout << s << endl; //打印出:a
  13. s.clear();
  14. return 0;
  15. }


字符的替換

1)string& replace(size_t pos, size_t n, const char *s);//將當(dāng)前字符串

pos索引開始的n個字符,替換成字符串s

2)string& replace(size_t pos, size_t n, size_t n1, char c); //將當(dāng)前字符串

pos索引開始的n個字符,替換成n1個字符c

3)string& replace(iterator i1, iterator i2, const char* s);//將當(dāng)前字符串

[i1,i2)區(qū)間中的字符串替換為字符串s

  1. #include <string>
  2. #include <iostream>
  3. using namespace std;
  4. int main(void)
  5. {
  6. string s("hello,boy!");
  7. s.replace(6,3,"gril"); //boy替換為girl
  8. cout << s << endl; //打印hello gril!
  9. s.replace(10,1,1,'.'); //將"hello gril!"的'!'替換為'.'
  10. cout << s << endl; //打印hello gril.
  11. s.replace(s.begin(),s.begin()+5, "good morning");
  12. cout << s << endl; //打印good morning girl.
  13. return 0;
  14. }


字符的搜索

相關(guān)函數(shù)較多,下面列舉幾個常用的:

1)size_t find (constchar* s, size_t pos = 0) const;

  //在當(dāng)前字符串的pos索引位置開始,查找子串s,返回找到的位置索引,

    -1表示查找不到子串

2)size_t find (charc, size_t pos = 0) const;

  //在當(dāng)前字符串的pos索引位置開始,查找字符c,返回找到的位置索引,

    -1表示查找不到字符

3)size_t rfind (constchar* s, size_t pos = npos) const;

  //在當(dāng)前字符串的pos索引位置開始,反向查找子串s,返回找到的位置索引,

    -1表示查找不到子串

4)size_t rfind (charc, size_t pos = npos) const;

  //在當(dāng)前字符串的pos索引位置開始,反向查找字符c,返回找到的位置索引,

    -1表示查找不到字符

5)size_tfind_first_of (const char* s, size_t pos = 0) const;

  //在當(dāng)前字符串的pos索引位置開始,查找子串s的字符,返回找到的位置索引,

    -1表示查找不到字符

6)size_tfind_first_not_of (const char* s, size_t pos = 0) const;

  //在當(dāng)前字符串的pos索引位置開始,查找第一個不位于子串s的字符,

返回找到的位置索引,-1表示查找不到字符

7)size_t find_last_of(const char* s, size_t pos = npos) const;

  //在當(dāng)前字符串的pos索引位置開始,查找最后一個位于子串s的字符,返回找到的位置索引,-1表示查找不到字符

8)size_tfind_last_not_of (const char* s, size_t pos = npos) const;

 //在當(dāng)前字符串的pos索引位置開始,查找最后一個不位于子串s的字符,返回找到的位置索引,-1表示查找不到子串

  1. #include <string>
  2. #include <iostream>
  3. using namespace std;
  4. int main(void)
  5. {
  6. //0123456789012345678901234
  7. string s("dog bird chicken bird cat");
  8. //字符串查找
  9. cout << s.find("bird") << endl; //打印
  10. cout << (int)s.find("pig") << endl; //打印-1
  11. //字符查找
  12. cout << s.find('i',7) << endl; //打印
  13. //從字符串的末尾開始查找字符串
  14. cout << s.rfind("bird") << endl; //打印
  15. //從字符串的末尾開始查找字符
  16. cout << s.rfind('i') << endl; //打印
  17. //查找第個屬于某子串的字符
  18. cout << s.find_first_of("13r98") << endl; //找到字符r,打印
  19. //查找第個不屬于某字符串的字符
  20. cout << s.find_first_not_of("dog bird 2006") << endl; //找到字符c,打印
  21. //查找最后一個屬于某子串的字符
  22. cout << s.find_last_of("13r98") << endl; //字符r,打印
  23. //查找最后一個不屬于某字符串的字符
  24. cout << s.find_last_not_of("tea") << endl; //字符c,打印
  25. return 0;
  26. }


字符串的比較

1)int compare (conststring& str) const;//將當(dāng)前字符串與字符串str比較,

    相等返回0,大于str返回1,小于str返回-1

2)int compare (size_tpos, size_t len, const char* s) const; //將當(dāng)前字符串從

Pos索引位置開始的len個字符構(gòu)成的字符串與字符串s比較,

相等返回0,大于str返回1,小于str返回-1

3)int compare (constchar* s) const; //直接將當(dāng)前字符串與字符串s比較,

相等返回0

  1. #include <string>
  2. #include <iostream>
  3. using namespace std;
  4. int main(void)
  5. {
  6. string s1("abcdef");
  7. string s2("abc");
  8. cout << s1.compare("abcdef") << endl; //相等,打印
  9. cout << s1.compare(s2) << endl; //s1 > s2,打印
  10. cout << s1.compare("abyz") << endl; //s1 < "abyz",打印-1
  11. cout << s1.compare(0,3,s2) << endl; //s1的前個字符==s2,打印
  12. return 0;
  13. }


文章為本人原創(chuàng),轉(zhuǎn)載請注明出處:http://blog.csdn.net/lsh_2013/article/details/46728993




    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    永久福利盒子日韩日韩| 粉嫩国产美女国产av| 日本不卡一本二本三区| 欧美偷拍一区二区三区四区| 国产亚洲精品香蕉视频播放| 欧美又大又黄刺激视频| 日韩性生活片免费观看| 国产精品九九九一区二区| 中文字幕日韩无套内射| 97人妻人人揉人人躁人人| 色欧美一区二区三区在线| 亚洲另类欧美综合日韩精品 | 老鸭窝精彩从这里蔓延| 精品精品国产自在久久高清| 日韩女优视频国产一区| 在线欧洲免费无线码二区免费| 精品少妇一区二区视频| 中文精品人妻一区二区| 日韩欧美国产高清在线| 亚洲午夜福利不卡片在线| 国产又大又硬又粗又湿| 午夜激情视频一区二区| 深夜视频在线观看免费你懂| 日韩中文字幕免费在线视频| 亚洲一区二区欧美在线| 超碰在线免费公开中国黄片| 国产色偷丝袜麻豆亚洲| 人妻乱近亲奸中文字幕| 丰满人妻熟妇乱又乱精品古代| 福利新区一区二区人口| 久久机热频这里只精品| 欧美日韩综合在线第一页| 又大又长又粗又黄国产| 嫩草国产福利视频一区二区| 欧美精品久久男人的天堂| 玩弄人妻少妇一区二区桃花| 国产成人精品视频一区二区三区| 区一区二区三中文字幕| 成年人视频日本大香蕉久久| 99久只有精品免费视频播放| 日本少妇三级三级三级|