すでにこの質問をし、c ++ STLについての回答を受け取りましたが、ブーストについてはどうでしょうか。
これはブーストファインダーについての質問です。記述可能なBoostライブラリの実装へのリンクがある場合は、実際のアプリケーションでBoostライブラリを簡単に探すことができるようにしていただければ幸いです。
私の質問は、どのブーストファインダーがlastIndexOfに最も当てはまるかということです。
すでにこの質問をし、c ++ STLについての回答を受け取りましたが、ブーストについてはどうでしょうか。
これはブーストファインダーについての質問です。記述可能なBoostライブラリの実装へのリンクがある場合は、実際のアプリケーションでBoostライブラリを簡単に探すことができるようにしていただければ幸いです。
私の質問は、どのブーストファインダーがlastIndexOfに最も当てはまるかということです。
まず最初に、部分文字列の最後の出現を検索する場合の最も簡単なオプションは、次を使用することstd::string::rfind
です。
std::string str = "Hello, World!";
int index = str.rfind("o");
汎用範囲で動作させたいためにBoostを使用する必要がある場合は、を使用しますboost::algorithm::find_last
。2つの範囲が必要です。2番目の範囲は最初の範囲で検索されます。
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
。ファインダーは、2つのイテレーターを引数として取る関数オブジェクトを返します。関数は次のように返します。次の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());