В 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. Понимая эти различные методы, вы можете выбрать наиболее подходящий подход для ваших конкретных потребностей. Не забывайте экспериментировать и адаптировать эти методы к своим проектам!