Непонятное поведение rfind()
Дано:
std::string s = "GCAGAGAG"
string sstr = s.substr(7); // = "G"
Выполняю rfind():
auto nsub = s.rfind(sstr, 6);
Получаю
nsub равен 5
Вопрос: почему так?
Если верить @Drawn Raccoon, получаем:
И ответ должен быть или 0 или 7...
Ответы (2 шт):
Автор решения: Harry
→ Ссылка
Итак,
std::string s = "GCAGAGAG"
string sstr = s.substr(7); // = "G"
Пока да.
auto nsub = s.rfind(sstr, 6);
В строке
"GCAGAGAG"
мы ищем G, начиная с 6 позиции и идя к началу строки. И видим такую букву в позиции 5...
GCAGAGAG
01234567
^
Что не так?...
Грубо говоря, rfind работает так: Ага, нам передано 6. Что у нас в s[6]? A - не подходит... Далее, 6-1=5. Что у нас в s[5]? G? Отлично, что искали, вернуть 5...


