我对 boost 和 c++ 进行了一些研究,但找不到与我的问题相关的任何内容。是否有实现lastIndexOf的 boost 库或 STL 函数?
问问题
2178 次
3 回答
7
看起来你可能想要std::string::find_last_of
。
查找与给定字符序列中的一个字符相等的最后一个字符。如果没有找到这样的字符,则返回找到的字符或 npos 的位置。
编辑:
另请参阅 hmjd 的答案。根据您是在搜索单个字符、多个可能字符之一还是子字符串,它们之间存在差异find_last_of
,rfind
具体取决于您。
于 2013-03-21T20:50:14.953 回答
5
std::string
具有从末尾开始搜索的成员函数rfind()
,如果找到或未找到则返回索引std::string::npos
。从链接的参考页面:
查找等于给定字符序列的最后一个子字符串。
于 2013-03-21T20:44:41.963 回答
4
当然,您可以使用std::find
with reverse_iterator
s。例如,您有一个整数向量,并且您想找到其中的最后 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 回答