2

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

4

3 回答 3

7

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

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

编辑:

另请参阅 hmjd 的答案。根据您是在搜索单个字符、多个可能字符之一还是子字符串,它们之间存在差异find_last_ofrfind具体取决于您。

于 2013-03-21T20:50:14.953 回答
5

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

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

于 2013-03-21T20:44:41.963 回答
4

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

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

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

int index = std::distance(v.begin(), (it+1).base());
于 2013-03-21T20:44:58.987 回答