2

已经问过这个问题并收到了有关 c++ STL 的答案,但是 boost 呢?

这是一个关于 boost Finders 的问题。如果您有可描述的 boost 库实现的链接,我将不胜感激它可以更轻松地为实际应用程序寻找 boost 库。

我的问题是哪个 boost finder 最适用于lastIndexOf

4

1 回答 1

2

首先,如果您要搜索子字符串的最后一次出现,最简单的选择是使用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());
于 2013-03-26T17:38:27.167 回答