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