string的find函数

  • 1.正向查找find()
    • 1.1 s.find(str)
    • 1.2 s.find(str,pos)
    • 1.3 s.find_first_of(str) 和 s.find_last_of(str)
    • 1.4查找目标字符串在字符串出现的总次数
  • 2.逆向查找rfind()

1.正向查找find()

1.1 s.find(str)

string中find()返回值是字母在母串中的下标位置。
如果没有找到,那么会返回一个特别的标记npos,一般写作string::npos

string s, c;
int main() {s = "apple";c = "l";int index = s.find(c);if (index != string::npos)cout << index << endl;
}

输出:

3

1.2 s.find(str,pos)

find(str,pos)是用来寻找从pos开始(包括pos处字符)匹配str的位置。

string s, c;
int main() {s = "laaaal";c = "l";int index = s.find(c,3);//从字符串s下标3的位置开始寻找if (index != string::npos)cout << index << endl;
}

上述等价于从字符串"aal"开始找"l",省略第一个"l"。
输出结果:

5

1.3 s.find_first_of(str) 和 s.find_last_of(str)

找到目标字符在字符串中第一次出现和最后一次出现的位置

string s, c;
int main() {s = "laaaal";c = "l";cout << "first index:" << s.find_first_of(c) << endl;cout << "last index:" << s.find_last_of(c) << endl;
}

输出:

first index:0
last index:5

1.4查找目标字符串在字符串出现的总次数

核心代码:index=s.find(c,index),index每次都会更新下一次找到的位置,如果没有找到跳出循环。

string s, c;int main() {while (cin >> s >> c) {int index = 0;//用来存储不断更新最新找到的位置int sum = 0;//累加出现的次数while ((index = s.find(c,index)) != string::npos) {cout << "sum: " << sum+1 << " index: " << index <<endl;index += c.length();//上一次s中与c完全匹配的字符应跳过,不再比较sum++;}cout << sum << endl;}
}
llllll
ll
sum: 1 index: 0
sum: 2 index: 2
sum: 3 index: 4
3

2.逆向查找rfind()

  • s.rfind(str): 是从字符串右侧开始匹配str,并返回在字符串中的下标位置;
string s = "apple";
cout << s.rfind("l") << endl;

这时结果是否还是跟find()查找一样,输出结果是3呢?让我们往下看。
结果显示:

3
  • rfind(str,pos): 从pos开始,向前查找符合条件的字符串;

c++string函数(一)——find、rfind详细用法相关推荐

  1. oracle 天转换成月函数_oracle中to_date详细用法示例(oracle日期格式转换)

    TO_DATE格式(以时间:2007-11-02 13:45:25为例) 1. 日期和字符转换函数用法(to_date,to_char) select to_char(sysdate,'yyyy-mm ...

  2. impala常用String函数大全(超详细)

    本文目录 字符串函数 函数列表 字符串函数 Impala中字符串函数主要应用于 varchar.char.string类型,如果把varchar或者char类型的值传递给字符串函数,返回将是一个str ...

  3. C++中s.find()和s.rfind()的用法

    本博客转载博主你脸上有BUG的博客c++string函数(一)--find.rfind详细用法 呃-主要我懒得写了-自己拷贝下来以后好找好复习. 此函数主要用于查找子串在母串中的位置. 1.正向查找f ...

  4. c++ string函数详细返回值及用法!

    通过在网站上的资料搜集,得到了很多关于string类用法的文档,通过对这些资料的整理和加入一些自己的代码,就得出了一份比较完整的关于string类函数有哪些和怎样用的文档了! 下面先罗列出string ...

  5. Python语言学习之字母G开头函数使用集锦:global用法之详细攻略

    Python语言学习之字母G开头函数使用集锦:global用法之详细攻略 global全局变量用法 global全局变量:python使用的变量默认一定是用局部变量:如果想使用作用域之外的全局变量,则 ...

  6. Python语言学习之字母A开头函数使用集锦:assert用法之详细攻略

    Python语言学习之字母A开头函数使用集锦:assert用法之详细攻略 assert断言的用法 assert断言用法:防御性的编程.运行时对程序逻辑的检测.合约性检查(比如前置条件,后置条件).程序 ...

  7. Python语言学习之字母C开头函数使用集锦:count用法之详细攻略

    Python语言学习之字母C开头函数使用集锦:count用法之详细攻略 count用法 list.count函数的用法 list=['America', 'America', '山东', '山东', ...

  8. oracle rtrim(),Oracle ltrim() rtrim() 函数详细用法

    嘿嘿,今天在论坛里看了一篇帖子,讨论ltrim() 函数的详细用法,下面我借几个高手的回答总结一下: 先看几个实例: SQL> select ltrim('109224323','109') f ...

  9. pythonrange函数用法_python range()函数详细用法

    python range()函数详细用法 函数原型:range(start, end, scan): 参数含义:start:计数从start开始.默认是从0开始.例如range(5)等价于range( ...

最新文章

  1. RateLimiter 的底层实现是啥?
  2. ValueError: Must have equal len keys and value when setting with an iterable
  3. 怎样在谷歌浏览器上加载金山词霸的取词插件?
  4. SpringBoot中使用Redis数据库
  5. [算法笔记]-环形链表Ⅱ-解题方法
  6. Amazon Aurora:高吞吐量云原生关系数据库的设计考虑
  7. 【Java】五种常见排序之-----------冒泡排序
  8. axios请求报Uncaught (in promise) Error: Request failed with status code 404
  9. simulink中mask设置_(实现BPSK学习Verilog)1. Simulink仿真实现
  10. elasticsearch 条件去重_Elasticsearch学习之查询去重
  11. 微软Tech·Ed与中国IT行业一同成长
  12. Python学习相关文档
  13. Spring Boot + JPA + Oracle 自增长字段实现示例
  14. 【codevs4228】小猫爬山(最优化剪枝)
  15. Python地理数据处理相关模块的安装方法
  16. 数字图像处理-空间滤波
  17. jsp企业员工请假管理系统
  18. java 托盘 气泡 菜单_C#如何使用NotifyIcon实现任务栏托盘菜单及气泡提示
  19. 小米路由器显示DNS服务器设置错误,小米路由器dns地址怎么设置
  20. 情感日记:用科学的方法追女孩(转)

热门文章

  1. Spring 中设置依赖注入
  2. Qt之C语言有符号数与无符号数运算
  3. Android自动化测试之路——技术准备
  4. CSS中加号、星号及其他符号的作用
  5. Webpack实战(二):基础配置入门 - webpack-dev-server的介绍与用法
  6. android应用程序的生命周期,Android应用程序的生命周期.doc
  7. Array deduplication
  8. R7-1 What is a computer? (5 分)
  9. C#设计学生成绩排序
  10. C语言数组查找(线性查找 折半查找)