今天看代码,发现对STL中find函数掌握还是有点少,现在总结一下find函数的用法。

在非string类型的容器里,可以直接找出所对应的元素。find函数需要几个参数:迭代器、下标志、所要找的元素。

例如:

vector<int>  a;

find(a.begin(),a.end(),1);

这句话就表示从a的头开始一直到尾,找到第一个值为1的元素,返回的是一个指向该元素的迭代器。

find函数一般在string中使用较广,find函数有一系列的函数,今天简单总结一下:

1.find()

(1)find()函数查找第一次出现的目标字符串。

#include <string>
#include <iostream>
using namespace std;
int main()
{string str1("i am a student");string str2("student");string::size_type pos = str1.find(str2);   //在字符串str1中寻找字符串str2if (pos == str1.npos)       //对于字符串str1中没有该字符串str2的情况做出处理{cout << "没有找到str2" << endl;return 0;}cout << "Found str2 at str1: " << pos << endl;    //打印字符串str2在str1中开始的位置cout << "Element:" << str2 << endl;                return 0;
}

若将str1改为“i  am  a  student  student”,那么结果会发生改变吗?

我们发现答案和第一次运行的结果是一致的,因此find()只返回第一次出现的目标字符串。

(2)find(string  str,  int  pos)

如果find()函数中除了有被找寻的字符串,还有一位整型数,表示从改位置开始遍历被搜索的字符串,已找到被找寻的字符串。

将上面的代码简单的修改一下

现在从第八位开始遍历str1,有上面的运行结果我们应该知道现在应该找不到str2,运行结果:

2.find_first_of()

find_first_of()表示查找字符串的某个字符最先出现的位置,find_first_of()不是全匹配,即它不是必须要查找的字符串在被查找的字符串中全部出现,而是出现个别字符即可。

我重新举一个例子:

#include <string>
#include <iostream>
using namespace std;
int main() {string numerics("0123456789");string name("r2d2");string::size_type pos = name.find_first_of(numerics);if (pos == name.npos){return 0;}cout << "Found numercis at name: " << pos << endl;    cout << "Element:" << name[pos] << endl;
}

可以看出,该函数是将被查找的字符串和查找的字符串中第一个重复的字符的下标返回回来。

3.find_last_of()

find_last_of()函数与find_first_of()功能差不多,只不过find_first_of()是从字符串的前面往后面搜索,而find_last_of()是从字符串的后面往前面搜索。

4.rfind()

rfind()函数是反向查找字符串,即找到最后一个与子串匹配的位置

5.find_first_not_of()

find_first_not_of()函数是找到第一个不与子串匹配的位置

string中的find函数相关推荐

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

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

  2. C++ string中的append函数

    C++ string中的append函数 1. append函数     常用的函数原型:       basic_string &append( const basic_string &am ...

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

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

  4. Java String 中的一些函数与正则的结合使用

    首先正则表达式在处理字符串问题时,真的非常强大. 正则可以帮助我们处理字符串的: 匹配, 选择, 编辑, 验证等问题. 正则中"\\"表示插入一个"\" 这里仅 ...

  5. String中的assign函数

    string &assign(const char *s);用c类型字符串s赋值 string &assign(const char *s,int n);用c字符串s开始的n个字符赋值 ...

  6. C语言string中的find()函数

    在c++中,字符串类型string后面加上.find()的作用,是 string str1, str2;int i;string str1 = "qwertyuuoesdi";st ...

  7. C++中的getline函数

    C++中本质上有两种getline函数,一种在头文件< istream >中,是istream类的成员函数.一种在头文件< string >中,是普通函数. 一.在< i ...

  8. C++String中的find用法

    #include<string> string 是c++中一个非常重要函数. 在处理字符串的时候经常用到. find是string中一个查找函数. find用法: 1.find() 示例: ...

  9. C++中的find函数

    我们在C++中使用的find函数一般都是algorithm库里面提供的或者 是STL容器里面的find函数.今天就来总结一下他们的使用与区别 1. 容器里面的find函数 STL里面容器除了vecto ...

最新文章

  1. 设计模式学习2:单例模式
  2. 来聊聊双目视觉的基础知识(视觉深度、标定、立体匹配)
  3. Flutter之Dart入门
  4. asp.net访问被拒绝,程序集无法加载原因与解决方法[摘录]
  5. acwing算法题--看图做题
  6. 【转】提高PHP性能的53个技巧
  7. wordpress去掉index.php,wordpress去掉url中index.php 创建分类目录404如何解决
  8. MATLAB绘制地图超详细教程
  9. 6种常用的项目管理模式
  10. C++实用的闹钟程序
  11. 一个页面播放多个视频
  12. DDR4两根4G组的双通道跟1根8G单通道有什么区别?
  13. C语言求田径场周长和面积,田径场尺寸计算及画法
  14. http://enki-ding-yeah-net.iteye.com/blog/1042644
  15. 【MCAL_CANDriver】-1.2-Can Mailbox邮箱,Hardware Object,HOH,HRH,HTH之间的关系
  16. 机器学习与分布式机器学习_机器学习应运而生
  17. Cesium-源码修改-gltf增加纹理贴图改变3dtiles外观
  18. 小米手机怎么开空调?3步让你的手机成为空调遥控器
  19. Android Recovery 模式
  20. 名品链THBC缔盟之链

热门文章

  1. QQ微信号数据库 微信号采集 可区分性别地区1-100万个
  2. The Plane.
  3. 【day4-c\c++入门-三子棋游戏】
  4. 腾讯云服务器标准型SA2详细情况
  5. 关于U盘在装系统之后之后容量变小且不能格式化的解决方法
  6. Python 百分制成绩转换为等级制成绩
  7. 解决android中java.lang.RuntimeException: Unable to start activity ComponentInfo问题
  8. ubuntu虚拟机环境搭建
  9. java的throwable子类_lang——Throwable子类
  10. 小L的项链切割(dp)