Метод rfind
Метод rfind класса string ищет последнее
вхождение подстроки или символа в строке. Поиск
ведется с конца строки к началу, но возвращается
обычная позиция от начала строки. Если вхождение
не найдено, метод возвращает специальное значение
string::npos. Сама строка при этом не изменяется.
В первый параметр мы передаем искомую подстроку
или символ, во второй - позицию, с которой следует
начинать поиск (поиск идет влево от этой позиции).
Синтаксис
str.rfind(substr, [pos])
Пример
Давайте найдем последнее вхождение символа
'a' в строке "abcdeabcde":
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "abcdeabcde";
cout << str.rfind('a') << endl;
return 0;
}
Результат выполнения кода:
5
Пример
Давайте найдем последнее вхождение подстроки
"cd" в строке "abcdeabcde":
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "abcdeabcde";
cout << str.rfind("cd") << endl;
return 0;
}
Результат выполнения кода:
7
Пример
Давайте ограничим поиск позицией 4,
то есть будем искать последнее вхождение
символа 'a' только среди первых
5 символов строки:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "abcdeabcde";
cout << str.rfind('a', 4) << endl;
return 0;
}
Результат выполнения кода:
0
Пример
Давайте проверим, что вернет метод rfind,
если вхождение не найдено:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "abcde";
if (str.rfind('z') == string::npos) {
cout << "not found" << endl;
}
return 0;
}
Результат выполнения кода:
"not found"
Смотрите также
-
метод
find,
который ищет первое вхождение подстроки -
метод
find_last_of,
который ищет последнее вхождение любого из символов -
метод
substr,
который вырезает подстроку из строки -
метод
replace,
который заменяет часть строки на другую