Для поиска подстроки в C++ можно использовать различные методы. Вот некоторые часто используемые подходы:
- Использование функции
find: Функцияfindявляется функцией-членом классаstd::stringв C++. Он позволяет искать подстроку внутри строки. Он возвращает позицию первого вхождения подстроки илиstd::string::npos, если подстрока не найдена.
std::string str = "Hello, World!";
std::string substring = "World";
size_t position = str.find(substring);
if (position != std::string::npos) {
// Substring found
} else {
// Substring not found
}
<ол старт="2">
strstr: Функция strstr— это стандартная функция библиотеки C, которую можно использовать для поиска первого вхождения подстроки в строке C-стиля ( символ*). Он возвращает указатель на первое вхождение подстроки или nullptr, если подстрока не найдена.const char* str = "Hello, World!";
const char* substring = "World";
char* position = strstr(str, substring);
if (position != nullptr) {
// Substring found
} else {
// Substring not found
}
- Использование регулярных выражений. C++ предоставляет библиотеку
, которая позволяет использовать регулярные выражения для расширенного сопоставления строк. Вы можете создать шаблон регулярного выражения, соответствующий нужной подстроке, и искать его внутри строки.
#include <regex>
std::string str = "Hello, World!";
std::string substring = "World";
std::regex pattern(substring);
if (std::regex_search(str, pattern)) {
// Substring found
} else {
// Substring not found
}
- Использование класса
std::string_view. Если вы работаете с большими строками и хотите избежать ненужных копий памяти, вы можете использовать классstd::string_view., представленный в C++17. Он обеспечивает упрощенное представление строки без права владения, и вы можете использовать функциюfindдля поиска подстроки.
#include <string_view>
std::string_view str = "Hello, World!";
std::string_view substring = "World";
size_t position = str.find(substring);
if (position != std::string_view::npos) {
// Substring found
} else {
// Substring not found
}
<старый старт="5">