c++中类似java的lastIndexOf

Java-like lastIndexOf in c++

本文关键字:lastIndexOf java c++      更新时间:2023-10-16

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

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

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

编辑:

也可以看到hmjd的答案。find_last_ofrfind之间的差异取决于您是在搜索单个字符,许多可能字符中的一个还是子字符串。

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

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

当然,您可以将std::findreverse_iterator一起使用。例如,你有一个int型的向量,你想找出它的最后5个。你

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

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

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