#include <iostream>
#include <string>
using namespace std;
std::size_t rfind_in_substr(
const std::string& str
, const std::size_t from
, const std::size_t len
, const std::string& sub
) {
std::size_t res = str.rfind(sub, from+len-sub.size());
return res != string::npos && res >= from ? res : string::npos;
}
int main() {
std::string sample("An example with the example word example trice");
// 0123456789012345678901234567890123456789012345
// 0000000000111111111122222222223333333333444444
// substring "ample with the example wo"
std::size_t substr_beg = 5;
std::size_t substr_size = 24;
std::cout << sample.substr(substr_beg, substr_size) << endl;
std::size_t r = rfind_in_substr(sample, substr_beg, substr_size, "example");
std::cout << r << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RkOjpzaXplX3QgcmZpbmRfaW5fc3Vic3RyKAoJY29uc3Qgc3RkOjpzdHJpbmcmIHN0cgosICAgY29uc3Qgc3RkOjpzaXplX3QgZnJvbQosICAgY29uc3Qgc3RkOjpzaXplX3QgbGVuCiwgICBjb25zdCBzdGQ6OnN0cmluZyYgc3ViCikgewogICAgc3RkOjpzaXplX3QgcmVzID0gc3RyLnJmaW5kKHN1YiwgZnJvbStsZW4tc3ViLnNpemUoKSk7CiAgICByZXR1cm4gcmVzICE9IHN0cmluZzo6bnBvcyAmJiByZXMgPj0gZnJvbSA/IHJlcyA6IHN0cmluZzo6bnBvczsKfQoKaW50IG1haW4oKSB7CiAgICBzdGQ6OnN0cmluZyBzYW1wbGUoIkFuIGV4YW1wbGUgd2l0aCB0aGUgZXhhbXBsZSB3b3JkIGV4YW1wbGUgdHJpY2UiKTsKICAgIC8vICAgICAgICAgICAgICAgICAgMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NQogICAgLy8gICAgICAgICAgICAgICAgICAwMDAwMDAwMDAwMTExMTExMTExMTIyMjIyMjIyMjIzMzMzMzMzMzMzNDQ0NDQ0CiAgICAvLyBzdWJzdHJpbmcgImFtcGxlIHdpdGggdGhlIGV4YW1wbGUgd28iCiAgICBzdGQ6OnNpemVfdCBzdWJzdHJfYmVnID0gNTsKICAgIHN0ZDo6c2l6ZV90IHN1YnN0cl9zaXplID0gMjQ7CiAgICBzdGQ6OmNvdXQgPDwgc2FtcGxlLnN1YnN0cihzdWJzdHJfYmVnLCBzdWJzdHJfc2l6ZSkgPDwgZW5kbDsKICAgIHN0ZDo6c2l6ZV90IHIgPSByZmluZF9pbl9zdWJzdHIoc2FtcGxlLCBzdWJzdHJfYmVnLCBzdWJzdHJfc2l6ZSwgImV4YW1wbGUiKTsKICAgIHN0ZDo6Y291dCA8PCByIDw8IHN0ZDo6ZW5kbDsKICAgIHJldHVybiAwOwp9