Изучение различных способов проверить, содержит ли строка C++ другую строку

В C++ работа со строками — обычная задача, и часто нам нужно проверить, содержит ли одна строка другую. В этой статье блога мы рассмотрим различные методы достижения этой цели, используя разговорный язык и попутно предоставляя примеры кода. Итак, независимо от того, являетесь ли вы новичком или опытным программистом C++, давайте рассмотрим некоторые удобные методы хранения строк!

Метод 1: использование функции find()
Один простой подход — использовать функцию find(), которая возвращает позицию первого вхождения подстроки в строку. Если подстрока не найдена, возвращается специальное значение, называемое «npos». Вот пример:

std::string mainString = "Hello, world!";
std::string subString = "world";
if (mainString.find(subString) != std::string::npos) {
    std::cout << "Substring found!" << std::endl;
} else {
    std::cout << "Substring not found." << std::endl;
}

Метод 2: использование функции substr()
Другой способ проверить, содержит ли строка другую строку, — использовать функцию substr(). Этот метод предполагает извлечение подстроки из основной строки и сравнение ее с нужной подстрокой. Вот пример:

std::string mainString = "Hello, world!";
std::string subString = "world";
if (mainString.find(subString) != std::string::npos) {
    std::cout << "Substring found!" << std::endl;
} else {
    std::cout << "Substring not found." << std::endl;
}

Метод 3: регулярные выражения
Для более сложных шаблонов сопоставления могут пригодиться регулярные выражения. C++ предоставляет библиотеку , которая позволяет выполнять расширенное сопоставление строк с использованием регулярных выражений. Вот пример:

#include <iostream>
#include <regex>
int main() {
    std::string mainString = "Hello, world!";
    std::string pattern = "wo.*d"; // Matches any substring starting with "wo" and ending with "d"
    std::regex regex(pattern);
    if (std::regex_search(mainString, regex)) {
        std::cout << "Substring found!" << std::endl;
    } else {
        std::cout << "Substring not found." << std::endl;
    }
    return 0;
}

Метод 4: использование функции strstr() (строки в стиле C)
Если вы работаете со строками в стиле C, вы можете использовать функцию strstr() из библиотеки . Эта функция возвращает указатель на первое вхождение подстроки в основную строку или нулевой указатель, если подстрока не найдена. Вот пример:

#include <iostream>
#include <cstring>
int main() {
    const char* mainString = "Hello, world!";
    const char* subString = "world";
    if (std::strstr(mainString, subString) != nullptr) {
        std::cout << "Substring found!" << std::endl;
    } else {
        std::cout << "Substring not found." << std::endl;
    }
    return 0;
}

В этой статье мы рассмотрели несколько методов проверки наличия в строке C++ другой строки. Мы рассмотрели такие методы, как использование функции find(), функции substr(), регулярных выражений и функции strstr() для строк в стиле C. Понимая эти различные методы, вы можете выбрать наиболее подходящий подход для ваших конкретных потребностей. Не забывайте экспериментировать и адаптировать эти методы к своим проектам!