• C++中string类型的find 函数


    (去膜拜大佬的博客园,结果被自己菜到自闭)

    find

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

    对其返回的下标position的定义:

     string::size_type position;
    前面那一块是一个类型,不要管他(我是小白)
     1  string s("1a2b3c4d5e6f7jkg8h9i1a2b3c4d5e6f7g8ha9i");
     2      string flag;
     3      string::size_type position;
     4      //find 函数 返回jk 在s 中的下标位置
     5      position = s.find("jk");
     6      if (position != s.npos)  //如果没找到,返回一个特别的标志c++中用npos表示,要记住,这是一个很大的数,不是零
     7      {
     8          printf("position is : %d
    " ,position);
     9      }
    10      else
    11      {
    12          printf("Not found the flag
    ");
    13      }
    
    

    再来一组

    s.find_first_of(flag):从头找flag 的位置

    s.find_last_of(flag):倒着找flag的位置

    find("b",5):从第五位往后找b所在的位置

    
    
    1   flag = "c";
    2       position = s.find_first_of(flag);
    3       printf("s.find_first_of(flag) is :%d
    ",position);
    4       position = s.find_last_of(flag);
    5       printf("s.find_last_of(flag) is :%d
    ",position);
    6       position=s.find("b",5);
    7     cout<<"s.find(b,5) is : "<<position<<endl;
    8     //查找s 中flag 出现的所有位置。
    
    

    还有一个更高级的,

    寻找所有的flag

    find(flag,position)!=string::npos

    1  flag="a";
    2     position=0;
    3     int i=1;
    4     while((position=s.find(flag,position))!=string::npos)
    5     {
    6         cout<<"position  "<<i<<" : "<<position<<endl;
    7         position++;
    8         i++;
    9     }

    也可以进行反向查找

    s.rfind()

    1 flag="3";
    2      position=s.rfind (flag);
    3      printf("s.rfind (flag) :%d
    ",position);

    这个地方有个内容,就是当s.find 与s,rfind寻找的地址不一致时,说明不止出现了一次.

    (所以有些题询问是否出现了一次时可以用)


    感谢大佬的博客园对本小白的帮助.
    部分代码参考来自
    https://www.cnblogs.com/wkfvawl/p/9429128.html
    此处应有掌声.
    虽然菜到了自闭,但是还是要继续往下走,去面对新的挑战.


  • 相关阅读:
    Echarts入门踩坑记录
    作业帮前端面经
    猿辅导前端面经
    昆仑万维前端面经
    顺丰科技前端面经
    云从科技前端面经
    亿联网络前端面经
    寒武纪前端面经
    纽约州交通事故数据可视化
    Vue中Object和Array数据变化侦测原理
  • 原文地址:https://www.cnblogs.com/zhmlzhml/p/12326885.html
Copyright © 2020-2023  润新知