повышение :: Алгоритм :: строка :: finder.hpp

Уже задавали этот вопрос и получил ответы о c ++ STL, но как насчет boost?

Это вопрос о повышении Finders. Если у вас есть ссылка на описываемые реализации библиотеки повышения, я был бы признателен за упрощение поиска библиотеки повышения для практических приложений.

Мой вопрос в том, какой бустер искатель больше всего относится к LastIndexOf?

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());
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]