string用法总结

打印 上一主题 下一主题

主题 1070|帖子 1070|积分 3210

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.介绍

string是一个字符串类,和char范例雷同,string是动态的,会自动调整大小,节流了不必要的空间。
1.初始化及界说

  1. //头文件
  2. #include<string>
  3. //1.
  4. string str1; //生成空字符串
  5. //2.
  6. string str2("123456789"); //生成"1234456789"的复制品
  7. //3.
  8. string str3("12345", 0, 3);//结果为"123" ,从0位置开始,长度为3
  9. //4.
  10. string str4("123456", 5); //结果为"12345" ,长度为5
  11. //5.
  12. string str5(5, '2'); //结果为"22222" ,构造5个字符'2'连接而成的字符串
  13. //6.
  14. string str6(str2, 2); //结果为"3456789",截取第三个元素(2对应第三位)到最后
复制代码
2.读入问题

读入字符,遇空格读入结束
  1. string s;
  2. cin >> s;
复制代码
读入一行字符串(包罗空格),遇回车结束
  1. string s;
  2. getline(cin, s);
复制代码
注意:getline(cin, s)会获取前一个输入的换行符,必要在前面添加读取换行符的语句。如:getchar() 或 cin.get()
例如错误读取
  1. int n;
  2. string s;
  3. cin >> n;
  4. getline(cin, s); //此时读取相当于读取了前一个回车字符
复制代码
正确读取:
  1. int n;
  2. string s;
  3. cin >> n;
  4. getchar(); //cin.get()
  5. getline(cin, s);//可正确读入下一行的输入
复制代码
2.函数方法

1.插入

代码寄义s.push_back()在末尾插入例:s.push_back('a')末尾插入一个字符as.insert(pos,ele)在pos位置插入元素例:s.insert(s.begin(),'1')在第一个位置插入 '1'字符s.append(str)在s字符串末端添加str字符串例:s.append("abc")在s字符串末尾添加字符串"abc" 2.删除

代码寄义erase(iterator p)删除字符串中p所指的字符erase(iterator fir,iterator last)删除迭代器区间[fir,end)上全部字符erase(pos,len)删除字符串从索引位置pos开始的len个字符clear()删除字符串中全部字符  3.字符更换

代码寄义s.replace(pos,n,str)把当前字符串从索引位置pos开始的n个字符更换为strs.replace(pos,n,m,c)把当前字符串从索引位置pos开始的n个字符更换为m个字符cs.replace(it1,it2,str)把当前字符串[it1,it2)区间更换为str,it1,it2为迭代器 4.大小写转换

代码寄义tolower(s)转换为小写toupper(s)转换为大写 5.分割

代码寄义s.substr(pos,n)截取从pos索引开始的个字符 6.查找

代码寄义s.find(str,pos)在当前字符串的pos索引位置(默以为0)开始,查找子串str,返回找到的位置索引,-1表示查找不到子串 7.排序 

  1. sort(s.begin(),s.end())
复制代码
 
  1. #include<string>
  2. #include<iostream>
  3. int main() {
  4.     string s("dog bird chicken bird cat");
  5. //字符串查找-----找到后返回首字母在字符串中的下标
  6. // 1. 查找一个字符串
  7.     cout << s.find("chicken") << endl;// 结果是:9
  8.    
  9. // 2. 从下标为6开始找字符'i',返回找到的第一个i的下标
  10.     cout << s.find('i',6) << endl;// 结果是:11
  11.    
  12. // 3. 从字符串的末尾开始查找字符串,返回的还是首字母在字符串中的下标
  13.     cout << s.rfind("chicken") << endl;// 结果是:9
  14.    
  15. // 4. 从字符串的末尾开始查找字符
  16.     cout << s.rfind('i') << endl;// 结果是:18因为是从末尾开始查找,所以返回第一次找到的字符
  17.    
  18. // 5. 在该字符串中查找第一个属于字符串s的字符
  19.     cout << s.find_first_of("13br98") << endl;// 结果是:4---b
  20.    
  21. // 6. 在该字符串中查找第一个不属于字符串s的字符------先匹配dog,然后bird匹配不到,所以打印4
  22.     cout << s.find_first_not_of("hello dog 2006") << endl; // 结果是:4
  23.     cout << s.find_first_not_of("dog bird 2006") << endl;  // 结果是:9
  24.    
  25. // 7. 在该字符串最后中查找第一个属于字符串s的字符
  26.     cout << s.find_last_of("13r98") << endl;// 结果是:19
  27. // 8. 在该字符串最后中查找第一个不属于字符串s的字符------先匹配t--a---c,然后空格匹配不到,所以打印21
  28.     cout << s.find_last_not_of("teac") << endl;// 结果是:21
  29. }
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

鼠扑

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表