0Pricing
C++ Academy · Урок

Операции со строками: объединение, подстрока, поиск и замена

Объединяйте, извлекайте фрагменты, ищите и заменяйте содержимое строк с помощью 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 — локальная установка не требуется.

Все уроки этого курса

  1. std::string и массивы символов в стиле C
  2. Операции со строками: объединение, подстрока, поиск и замена
  3. Строковый поток stringstream для разбора
  4. Преобразование строк: to_string и stoi
← Назад к C++ Academy