C++string中find_first_not_of()函数和find_last_not_of()函数

C++string中find_first_not_of()函数和find_last_not_of()函数

在学习这两个函数之前建议先学C++string中find_first_of()函数和find_last_of()函数。

1、find_first_not_of()函数

正向查找在原字符串中第一个与指定字符串(或字符)中的任一字符都不匹配的字符,返回它的位置。若查找失败,则返回npos。(npos定义为保证大于任何有效下标的值。)

2、find_last_not_of()函数

正向查找在原字符串中最后一个与指定字符串(或字符)中的任一字符都不匹配的字符,返回它的位置。若查找失败,则返回npos。(npos定义为保证大于任何有效下标的值。)

  • string str=“abcdefab”;

  • cout<<str.find_last_not_of(‘h’)<<endl;//第二个参数为0,默认从npos逆向查。原串倒数第一个字符b和h就不同,故输出b的小标7。

  • cout<<str.find_last_not_of(“ab”,6)<<endl;//从原串下标为6开始逆向查询,第一个a和待查串中的字符a相同,不符合,故继续逆向比较。f和待查子串任一字符不同,故输出f的下标5。

代码:

#include<iostream>
using namespace std;
int main()
{string str="abcdefab";cout<<str.find_first_not_of('h')<<endl;//第二个参数为0,默认从原串下标为0开始查找。第一个a就和带查字符不同,故输出a的下标0。cout<<str.find_first_not_of("twj",1)<<endl;//从下标为1开始查,第一个b就和待查子串任一字符不同,故输出b的下标1。cout<<str.find_first_not_of("wbj",1)<<endl;//从下标为1开始,第一个b与待查子串中的b一样,故b不符合,继续c再和子串任一字符比较,结果都不同,故输出c的下标2。cout<<str.find_first_not_of("abcdefg")<<endl;//原串任一字符都出现在子串中,故找不到,返回npos。cout<<str.find_last_not_of('h')<<endl;//第二个参数为0,默认从npos逆向查。原串倒数第一个字符b和h就不同,故输出b的小标7。cout<<str.find_last_not_of("ab",6)<<endl;//从原串下标为6开始逆向查询,第一个a和待查串中的字符a相同,不符合,故继续逆向比较。f和待查子串任一字符不同,故输出f的下标5。cout<<str.find_last_not_of("abcdefhu")<<endl;//原串任一字符都出现在子串中,故找不到,返回npos。return 0;
}//有效的下标应该在0~len-1范围内。len=str.size();

运行结果:

C++string中find_first_not_of()函数和find_last_not_of()函数和C++string中find_first_of()函数和find_last_of()函数。它们很相似,仅仅可以说是名字有没有not的区别。它们都可以看做是字符与字符的比较,部分匹配。而C++string中find()和rfind()函数是完全匹配,若待查子串是字符串而不是字符的话,就可以说是字符串与字符串的比较。

C++string中find_first_not_of()函数和find_last_not_of()函数相关推荐

  1. std::string中的find_first_of()和find_last_of()函数

    编程语言: c++/linux 在std::string中,有时需要找到一个string中最后一个或者第一个以某个特定的字符开始的位置或者下标,这时就需要使用find_first_of()和find_ ...

  2. C++ string中find ,rfind 等函数 用法总结及示例

    string中 find()的应用  (rfind() 类似,只是从反向查找) 原型如下: (1)size_t find (const string& str, size_t pos = 0) ...

  3. String 中 split 方法的效率问题

    问:String 中 split 方法使用时有什么效率问题吗? 答:String 的 split 分割字符串函数我们一般会如下方式使用. String[] arr = "a,b,c" ...

  4. C++string中用于查找的find系列函数浅析

    https://www.cnblogs.com/zpcdbky/p/4471454.html 总述:       以下所讲的所有的string查找函数,都有唯一的返回类型,那就是size_type,即 ...

  5. C++string中的find()函数

    C++ string中的find()函数 查找字符串s1中是否包含子串s2? 思路:此处需要用到string库中的find函数与npos参数. (1)string::npos参数 string::np ...

  6. string中的find函数

    今天看代码,发现对STL中find函数掌握还是有点少,现在总结一下find函数的用法. 在非string类型的容器里,可以直接找出所对应的元素.find函数需要几个参数:迭代器.下标志.所要找的元素. ...

  7. java字符串剪切函数,java用substring函数截取string中一段字符串,substringstring

    java用substring函数截取string中一段字符串,substringstring from  http://www.cnblogs.com/laiweili/archive/2012/11 ...

  8. C++string中的insert()插入函数

    C++string中的insert()插入函数 basic_string& insert (size_type pos, const basic_string& str); 在原串下标 ...

  9. C++string中replace()替换函数

    C++string中replace()函数 basic_string& replace(size_type pos, size_type n, const basic_string& ...

最新文章

  1. 【2021】一位清华大佬的互联网秋招算法岗总结
  2. android设置列表id,学习Android绑定列表的时候提示:You must supply a resource ID for a TextView,有完整示例代码...
  3. java list负载_java集合的扩容和负载因子的总结
  4. ABAP TBL鼠标滚动到某行某列
  5. SDRAM读写一字(上)
  6. 当前页面excel导出_系统地学习Excel第03课,Excel的工作界面
  7. ArcGIS 后台服务器抛出异常
  8. Visual Studio 2010 Beta版包括InstallShield Limited Edition
  9. 将矩阵化为上三角矩阵
  10. matlab 转换为相对湿度
  11. 1.2. Container Overview
  12. 如何在时间序列预测中检测随机游走和白噪声
  13. java8 list find_java8 多个list对象用lambda求差集操作
  14. VC++ 扫雷游戏的界面框架(“雷”按钮),不得不佩服那些码农
  15. python读取 xls,xlsx,csv,doc,docx,pdf 格式的文件
  16. 源IP源MAC目的IP目的MAC,在整个网络中的变化
  17. android 使用Path实现涂鸦效果
  18. 一名理想主义的程序员
  19. Java并发(一)并发基础
  20. webRTC(六):webrtc信令服务器实现

热门文章

  1. HTML标签语义化——使用b标签,还是strong标签
  2. python 彩票 遗漏值_荐Python遗漏知识点一
  3. [网络安全提高篇] 一〇六.SQL注入之手工注入和SQLMAP入门案例详解
  4. App设计灵感之十二组精美的电商App设计案例
  5. Django MPTT —— 概述
  6. 【STM32】独立看门狗相关函数和类型
  7. 【计算机类】大学生计算机专业电子书汇总
  8. excel像素画教程_像素画新手教程:极简像素画角色分析
  9. 【读书笔记】练习的心态
  10. LeetCode 437. Path Sum III (STL map前缀和)