Операции со строками: объединение, подстрока, поиск и замена
Объединяйте, извлекайте фрагменты, ищите и заменяйте содержимое строк с помощью API std::string.
«Операции со строками: объединение, подстрока, поиск и замена» — бесплатный урок C++ Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C++ Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C++ Academy содержит 4 уроков всего.
Объединение строк с помощью +
Оператор + объединяет две строки в новую строку. Оператор += добавляет содержимое на месте.
std::string a = "Hello, ";
std::string b = "World";
std::string c = a + b; // "Hello, World"
a += b; // a is now "Hello, World"Эффективное добавление
Многократное использование + для длинных строк создаёт множество временных объектов. В горячих циклах используйте += или append().
std::string result;
for (auto& word : words) {
result += word;
result += ' ';
}Подстрока с substr
substr(pos, len) возвращает новую строку, начинающуюся с позиции pos. По умолчанию len обозначает оставшуюся часть строки.
std::string s = "Hello, World";
std::cout << s.substr(0, 5); // "Hello"
std::cout << s.substr(7); // "World"Поиск подстрок: find
find(needle) возвращает индекс первого совпадения или std::string::npos, если совпадение не найдено.
std::string s = "the quick brown fox";
auto pos = s.find("quick");
if (pos != std::string::npos)
std::cout << "Found at " << pos;Поиск начиная с позиции
Передайте второй аргумент, чтобы начать поиск с определённого индекса — это удобно для поиска всех вхождений.
std::string s = "abc abc abc";
size_t pos = 0;
while ((pos = s.find("abc", pos)) != std::string::npos) {
std::cout << pos << ' ';
pos += 3;
}rfind: поиск с конца
rfind находит последнее вхождение. find_first_of и find_last_of ищут любой символ из заданного набора.
Замена на месте
replace(pos, len, str) заменяет len символов в позиции pos на str — новая строка может иметь другую длину.
std::string s = "Hello, World";
s.replace(7, 5, "C++");
std::cout << s; // "Hello, C++"Удаление символов
erase(pos, len) удаляет подстроку. Вызов erase() без аргументов очищает всю строку.
std::string s = "Hello, World";
s.erase(5, 2); // removes ", "
std::cout << s; // "HelloWorld"Вставка символов
insert(pos, str) вставляет str в позицию pos, сдвигая всё остальное вправо.
std::string s = "HelloWorld";
s.insert(5, ", ");
std::cout << s; // "Hello, World"Сравнение строк
Используйте стандартные операторы сравнения или compare(). Сравнение выполняется лексикографически.
std::string a = "apple", b = "banana";
if (a < b) std::cout << "apple comes first";Замена всех вхождений
В стандартной библиотеке нет одной функции для замены всех вхождений. Напишите простой вспомогательный метод или используйте std::regex.
void replaceAll(std::string& s, const std::string& from, const std::string& to) {
size_t pos = 0;
while ((pos = s.find(from, pos)) != std::string::npos) {
s.replace(pos, from.size(), to);
pos += to.size();
}
}Быстрая проверка
Что возвращает "hello".find("xyz"), если подстрока отсутствует?
Итоги
std::string предоставляет богатый программный интерфейс: + и += для объединения, substr для выделения части строки, find для поиска, а также replace, erase и insert для редактирования. После вызова find сравнивайте результат с std::string::npos.
Часто задаваемые вопросы
Урок «Операции со строками: объединение, подстрока, поиск и замена» бесплатный?
Да — полный текст урока «Операции со строками: объединение, подстрока, поиск и замена» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C++ Academy, подпишись на CoddyKit PRO. Курс C++ Academy содержит 4 уроков всего.
Чему я научусь в уроке «Операции со строками: объединение, подстрока, поиск и замена»?
Объединяйте, извлекайте фрагменты, ищите и заменяйте содержимое строк с помощью API std::string. Ты практикуешь C++ Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C++ Academy?
Предыдущий опыт не требуется. C++ Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Операции со строками: объединение, подстрока, поиск и замена»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C++ Academy?
Да. Каждый урок C++ Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- std::string и массивы символов в стиле C
- Операции со строками: объединение, подстрока, поиск и замена
- Строковый поток stringstream для разбора
- Преобразование строк: to_string и stoi