设为首页 加入收藏

TOP

c++标准库string的使用完美总结——十分详细,复习学习记忆都可以使用(五)
2023-07-23 13:39:17 】 浏览:398
Tags:string 十分 习学习 都可以
f()
这些函数返回符合搜索条件的字符区间内的第一个字符的索引,没找到目标就返回npos。所有的函数的参数说明:
第一个参数是被搜寻的对象。第二个参数(可有可无)指出string内的搜寻起点索引,第三个参数(可有可无)指出搜寻的字符个数。

find()与rfind()

  	string a="123456789abcdefgab";
  	string b="789abc";
  	如果找不到则返回的值为string::npos
  	/*if(a.find('k')==string::npos){cout<<"没有找到"<<endl;}*/
  	1.在字符串中查找某一个字符
  	   (1).从字符串开始位置开始查找
  	   auto s=a.find('a'); //结果为 s=9; 
  	   //表明a在字符串中从左向右第一次出现的位置的下标为9
  	   (2).从字符串某一个位置开始查找
  	   auto s=a.find('a',11); //结果为 s=16
  	   //从字符串下标为11的地方开始查找字符
  	
  	2.在字符串中查找某一个子串
  	   (1).从字符串开始位置开始查找
  	   auto s=a.find("9a");//结果为 s=8; 
  	   //表明9a子串的第一个字符在字符串中从左向右第一次出现的位置下标为8
  	   auto s=a.find(b); //结果为 s=6;
  	   (2).从字符串某一个位置开始查找
  	   auto s=a.find("ab",11); //结果为 s=16
  	   //从字符下标为11的地方开始向后查找
  	
  	3.在字符串中查找子串的前n个字符
  	 auto s=a.find("abcd",11,2); //结果为 s=16;
  	 //解释:在字符串a中查找,子串"abcd"的前2个字符即在字符串a中查找"ab"
  	 //注意 在这个重载函数中,第一个参数只能是char* 类型,而不能是string类型
  	
  	4.find()与rfind()的区别
  	find()是字符串从前向后查找,rfind()是字符串从后向前查找,其他的用法与find()函数类似

find_first_of()与find_last_of()

  	string a="123456789abcdefgh";
  	1.在字符串中查找某一个字符
  	auto s=a.find_first_of('5');//结果为 s=4;
  	auto s=a.find_first_of('5',5); //没有查找到 s=string::npos;
  	//如果查找某一个字符,与find()函数类似
  	
  	2.在字符串中查找子串
  	//此时与find()函数不同,find()函数是查找子串,
  	//而find_first_of()函数是查找字符串a中含有的任意子串的字符
  	auto s=a.find_first_of("8a"); //结果为 s=7;
  	auto s=a.find_first_of("8a",1); //结果为 s=7;
  	//在字符串a中查找最早出现的字符'8'或者'a';
  	auto s=a,find("8a"); //结果是找不到
  	auto s=a,find("8a",1); //结果是找不到
  	//find()函数查找子串必须是相连的,而find_first_of()不需要,只要字符串中含有子串的字就可以
  	/*重要
  	 *find_first_of()函数在字符串中查找子串中出现的任意字符,比如在字符串 "12abc"中查找子串"1k",1在字符串"12abc"中出现过,所以可以找到
  	 *find()函数在字符串"12abc"中查找"1k",则查找不到,它查找的必须是"1k"这两个相连的字符
  	 */
  	3.find_first_of()与find_last_of()的区别
  	find_first_of()是从前向后查找,而find_last_of()是从后向前查找。其他的用法与find_first_of()函数类似。

find_first_not_of()与find_last_not_of()

      find_first_not_of()与find_first_of()功能正好相反。不懂得可以先看我写的find_first_of()函数功能详解
  	find_firat_of()函数是在字符串中查找子串出现过的任意字符,也可以所字符串与子串都有的字符。
  	find_first_not_of()函数是在字符串中查找子串没有出现过的任意字符,也可以说是,字符串中有而子串中没有的字符
  	//以上查找的结果都是最先出现的那个字符的下标
  	//例
  	string a="12345";
  	auto s=a.find_first_not_of("1238"); //结果为 s=3;
  	//a字符串中有,而子串没有的是"45",而'4'字符是最先出现的,它的下标为3
  	find_first_not_of(str,n);
  	//str是子串,n是从下标为n的字符开始查找
  	find_first_not_of(str,n,m);
  	//str是子串,n是从下标为n的字符开始查找
  	//m是只看str子串的前m位字符
  	find_first_not_of()与find_last_not_of()查找顺序正好相反,
  	find_first_not_of()是从前向后,find_last_not_of()是从后向前查找
  	//如果以上看不懂的话建议先从find(),rfina()函数看起,之后再看find_first_of()与find_last_of(),最后看find_first_not_of()与find_last_not_of()

最后再说说npos的含义,string::npos的类型是string::size_type,所以,一旦需要把一个索引与npos相比,这个索引值必须是string::size)type类型的,更多的情况下,我们可以直接把函数和npos进行比较(如:if(s.find("jia")== string::npos))。

 s.substr();//返回s的全部内容
 s.substr(11);//从索引11往后的子串
 s.substr(5,6);//从索引5开始6个字符
    // 获取file的后缀
  	void Teststring1(){
  	    string file("string.cpp");
  	    size_t pos = file.rfind('.');
  	    string suffix = file.substr(pos);
  	    cout << suffix << endl;
  	}
   // 取出url中的域名
  	void Teststring2(){
  	
首页 上一页 2 3 4 5 6 下一页 尾页 5/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇数的计数 c++ 下一篇栈——stack的用法

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目