【问题标题】:Java-like lastIndexOf in c++c++ 中类似 Java 的 lastIndexOf
【发布时间】:2013-03-21 20:43:05
【问题描述】:

我对 boost 和 c++ 进行了一些研究,但找不到与我的问题相关的任何内容。是否有实现 lastIndexOf 的boost 库或STL 函数?

【问题讨论】:

    标签: c++ boost c++11 lastindexof


    【解决方案1】:

    看起来你可能想要std::string::find_last_of

    查找与给定字符序列中的一个字符相等的最后一个字符。返回找到的字符的位置,如果没有找到这样的字符,则返回 npos。

    编辑:

    另见 hmjd 的回答。 find_last_ofrfind 之间存在差异,具体取决于您搜索的是单个字符、多个可能字符之一还是子字符串。

    【讨论】:

      【解决方案2】:

      std::string 具有成员函数rfind(),它从末尾开始搜索,如果找到则返回索引,否则返回std::string::npos。从链接的参考页面:

      查找等于给定字符序列的最后一个子字符串。

      【讨论】:

        【解决方案3】:

        当然,您可以将std::findreverse_iterators 一起使用。例如,您有一个整数向量,并且您想找到其中的最后 5 个。你会的

        auto it = std::find(v.rbegin(), v.rend(), 5);
        

        如果你想要索引本身,那么你可以从迭代器中得到它

        int index = std::distance(v.begin(), (it+1).base());
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-20
          • 1970-01-01
          • 2016-03-21
          • 1970-01-01
          • 2017-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多