他の部分文字列内の文字列を見つける方法、つまり他の文字列の部分範囲内の文字列を見つける方法が必要です。私が探している文字列が "haystack"として使われている部分文字列の最後まで閉じていることを知っているので、逆の順序でそれを見つける必要があります。C++部分文字列内の文字列の最後の検索
のはrfind_in_substr
は、私が求めている方法であり、次のコード、としましょう:
std::size_t pos = substr_beg + sample.substr
(substr_beg, substr_size).rfind("example");
:もちろん
std::string sample("An example with the example word example trice");
// substring "ample with the example wo"
std::size_t substr_beg = 5;
std::size_t substr_size = 24;
// (1)
std::size_t pos = rfind_in_substr(sample, substr_beg,
substr_size, "example");
// pos == 20, because its the index of the start of the second
// "example" word inside the main string.
を、ラインは、(1)で置き換えることができますしかし、それは部分文字列の不必要なコピーを意味します。それを行うのを助ける方法やC++/boostメソッドがありますか?
私はboost::algorithm::string
ライブラリーを見ていましたが、私は何も分かりませんでした。私はC++ 17がstd::string_view
クラスを持っていることを知っています。それは完璧ですが、私はC++ 14を使用しています。
と間違って何[STD ::文字列:: RFIND](http://en.cppreference.com/w/cpp/string/basic_string/rfind)? – Ron
http://en.cppreference.com/w/cpp/string/basic_string/rfind私は_不要なコピーを見つけることはできません。 – user0042
@ user0042 'rfind'は文字列全体を" haystack "として使いますが、探している文字列は完全な文字列の部分範囲内になければなりません。 –