C++ find 函数

原创 2018年04月15日 09:26:26

Find()

很多语言都内置了非常方便的查找函数方便我们调用,其实C++中也有find函数:

vector中

使用find()函数需要#include<algorithm>,例如:

vector<string> ar1;
    ar1.push_back("aaa");
    ar1.push_back("bbb");
    ar1.push_back("ccc");
    ar1.push_back("ddd");
    if(find(ar1.begin(), ar1.end(), "bbb") != ar1.end()){
        cout<<find(ar1.begin(), ar1.end(), "bbb")-ar1.begin()<<endl;
        //看到find函数的返回结果与vector的end比较可以看出其实这是一个指针,那么如果我们想要获得索引
        //那么将返回结果与begin做差即可
    }
    else
        cout<<"NO"<<endl;

string中

我是觉得find可以使用到string中真的是非常方便,例如:

string str = "hello world";
    char ch = 'l';
    if(str.find(ch)!=string::npos){ //查找单个字符
        cout<<str.find(ch)<<endl;
    }
    else
        cout<<"NO"<<endl;

我们也可以看出这样返回的结果是匹配到的字符的第一个位置,如果有多个字符都可以匹配,那么只会返回第一个了,另外,关于string:npos ,如果我们故意没有匹配到,并输出结果,可以看到string:npos其实是等于4294967295的,通常使用这个值作为没有匹配到内容的结果判定。如果我们想要获取到所有的匹配字符的位置怎么办呢?其实我们find函数是有很多方式的,我们还可以通过第二个参数来控制开始查找的位置。参考:string find()

int p = 0;
while(str.find(ch, p)!=string::npos){
            p = str.find(ch, p);
            cout<<p<<endl;
            p = p + 1;
        }

这样通过一个位置p不断的更新上一次的匹配位置,我们可以不断地更新开始位置,这样就能得到所有地匹配位置了。
同样地,string地find函数也可以匹配到字符串:

    string ps;
    while(cin>>ps){
        if(str.find(ps)!=string::npos){
            cout<<str.find(ps)<<endl;
        }
        else
            cout<<"NO"<<endl;
    }

Jenkins 持续集成综合实战

Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。本文以 CentOS7 环境为例,总结了 Jenkin...
  • chen0613
  • chen0613
  • 2018-04-09 19:28:02
  • 41

[原创] RavenDB 安装 使用

RavenDB 安装/使用上一篇文章介绍了 CouchDB, 这篇文章介绍一下 RavenDB安装使用. RavenDB 也是支持对记录做版本管理的数据库. 默认是不支持的, 需要手动设置. 官网...
  • u012731379
  • u012731379
  • 2018-04-11 18:40:42
  • 20

C++ find函数简单应用

find函数可在已知字符串中查找子串 #include #include using namespace std; int main() { string s1 = "Rey Dennis S...
  • Slience_Perseverance
  • Slience_Perseverance
  • 2014-02-24 21:15:04
  • 7972

C++中find函数用法

C++中STL里提供了许多字符串操作的函数,下面是字符串查找方面的部分函数用法简介: 1.find() 查找第一次出现的目标字符串: #include #include using name...
  • laobai1015
  • laobai1015
  • 2017-03-16 16:40:48
  • 9585

单点登录 UCenter 分析

首先我们先来了解下 Ucenter登录步骤 1、用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和pass...
  • qq_36663951
  • qq_36663951
  • 2018-01-02 17:50:02
  • 54

C++find()函数用法

  • 2013年05月08日 15:46
  • 24KB
  • 下载

C++中find()函数的使用方法

转载自:http://blog.csdn.net/youxin2012/article/details/9162415 string中 find()的应用  (rfind() 类似,只是从反向查找)...
  • flyyufenfei
  • flyyufenfei
  • 2017-03-23 10:37:47
  • 6602

Sublime(mac/windows) with cpplint check——code-style of C++

sublime是一个轻量级的编辑器,是现在使用非常广泛的一个编辑器。可以渲染编辑很多种语言。本博客讲解使用sublime加载cpplint插件,加入代码风格的检查功能。 这篇博客是在同事的oneno...
  • u011233383
  • u011233383
  • 2018-04-04 09:44:56
  • 70

使用ffpmeg提取视频截图

亲测mac可用 # git clone git://source.ffmpeg.org/ffmpeg.git # cd ffpmeg # ./configure     # ./conf...
  • xiangzi1113
  • xiangzi1113
  • 2015-03-06 10:10:27
  • 892
收藏助手
不良信息举报
您举报文章:C++ find 函数
举报原因:
原因补充:

(最多只允许输入30个字)