我需要一種方法幫助我在另一個子字符串中查找字符串,換句話說,在其他字符串的子範圍內查找字符串。此外,我需要以相反的順序找到它,因爲我知道我正在查找的字符串被關閉到用作「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 :: string :: RFIND(http://en.cppreference.com/w/CPP /串/ basic_string的/ RFIND)? – Ron
http://en.cppreference.com/w/cpp/string/basic_string/rfind我無法找到_unnecessary copies_。 – user0042
@ user0042'rfind'使用整個字符串作爲「乾草堆」,但是我正在查找的字符串必須僅在完整字符串的子範圍中找到。 –