已经问过这个问题并收到了有关 c++ STL 的答案,但是 boost 呢?
这是一个关于 boost Finders 的问题。如果您有可描述的 boost 库实现的链接,我将不胜感激它可以更轻松地为实际应用程序寻找 boost 库。
我的问题是哪个 boost finder 最适用于lastIndexOf?
已经问过这个问题并收到了有关 c++ STL 的答案,但是 boost 呢?
这是一个关于 boost Finders 的问题。如果您有可描述的 boost 库实现的链接,我将不胜感激它可以更轻松地为实际应用程序寻找 boost 库。
我的问题是哪个 boost finder 最适用于lastIndexOf?
首先,如果您要搜索子字符串的最后一次出现,最简单的选择是使用std::string::rfind
:
std::string str = "Hello, World!";
int index = str.rfind("o");
如果您需要使用 Boost,因为您希望它适用于通用范围,请使用boost::algorithm::find_last
. 它需要两个范围。在第一个范围内搜索第二个范围。
std::string str = "Hello, World!";
iterator_range<std::string::iterator> it = find_last(str, "o");
int index = std::distance(str.begin(), it.begin());
如果您真的想使用查找器,那么您似乎正在寻找boost::algorithm::last_finder
. 查找器返回一个以两个迭代器作为参数的函数对象。该函数返回一个iterator_range
你可以像这样使用它:
auto finder = last_finder("o");
std::string str = "Hello, World!";
iterator_range<std::string::iterator> it = finder(str.begin(), str.end());
int index = std::distance(str.begin(), it.begin());