Добавить в корзинуПозвонить
Найти в Дзене

Функции для работы со строками в C++

При написании программ на языке C++ часто приходится иметь дело с текстом. Нужно склеить два слова, найти нужную букву или заменить часть фразы. Для этого в языке есть специальные встроенные инструменты. Давайте разберем самые основные и полезные функции. Они помогут вам обращаться с текстом так же легко, как с числами. Для простоты будем считать, что строка — это просто набор символов, заключенный в кавычки: "Привет". В C++ чаще всего используют тип string. Чтобы он работал, в самом начале программы нужно добавить: #include <string>. Самое понятное действие. Две строки можно просто сложить, поставив между ними плюс. Пример:
Name = "Анна" + " " + "Иванова". Когда применять: Когда нужно соединить слова, добавить пробел или знак препинания между частями текста. Но! Есть одна неприятность. Показанный выше пример приведёт к ошибке компиляции, потому что в C++ есть старая добрая работа со строками из языка Си. Когда вы пишете "Анна" с кавычками, это не строка типа string. Это массив отдельн
Оглавление

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

Давайте разберем самые основные и полезные функции. Они помогут вам обращаться с текстом так же легко, как с числами.

Что такое строка?

Для простоты будем считать, что строка — это просто набор символов, заключенный в кавычки: "Привет". В C++ чаще всего используют тип string. Чтобы он работал, в самом начале программы нужно добавить: #include <string>.

1. Склеивание (Сложение)

Самое понятное действие. Две строки можно просто сложить, поставив между ними плюс.

Пример:
Name = "Анна" + " " + "Иванова".

Когда применять: Когда нужно соединить слова, добавить пробел или знак препинания между частями текста.

Но! Есть одна неприятность. Показанный выше пример приведёт к ошибке компиляции, потому что в C++ есть старая добрая работа со строками из языка Си. Когда вы пишете "Анна" с кавычками, это не строка типа string. Это массив отдельных символов (си-строка, или const char[]).

Язык C++ не умеет складывать два таких массива через плюс. Отсюда и ошибка компиляции: «неверные типы операндов». Как это исправить, см. в примере:

2. Длина строки

Функция, которая считает количество символов в строке. Пробелы и знаки препинания тоже считаются.

Как использовать: К переменной с текстом нужно добавить точку и написать length() (современные средства разработки при написании точки после переменной предложат возможные варианты).

Пример:

Name.length();

Если это переменная из предыдущего примера, то функция вернёт число 12.

Когда применять: Перед тем как пройтись по строке символ за символом или когда нужно проверить, ввел ли пользователь что-то, а не оставил поле пустым.

3. Пустая строка

Бывает нужно просто узнать: есть внутри что-то или нет? Для этого служит функция empty().

Она возвращает ответ «да» или «нет»: пусто или не пусто.

Пример:

-2

Если строка пустая, то функция empty() вернет «истину» (пусто), и программа, например, может попросить ввести данные заново. Однако в консольных приложениях при использовании cin мы не сможем получить пустую строку, потому что при нажатии ENTER будет просто выполняться переход на новую строку, а программа продолжит ожидать ввода текста, но не перейдёт к выполнению следующей строки кода.

Когда применять: Для проверки ввода (в некоторых случаях). Нельзя искать букву в пустом месте или склеивать то, чего нет.

4. Добавление в конец

Бывает удобнее не склеивать через плюс, а прилепить новый кусок текста в конец уже существующей строки. Это делается функцией append().

Пример:
Было "Сок". Пишем append(" яблочный"). Получается "Сок яблочный".

Когда применять: Если вы собираете длинный текст по частям, например, формируете письмо или отчет.

Пример кода можно увидеть на первом рисунке выше.

5. Вставка в середину

Иногда нужно добавить символ или слово не в конец, а в указанное место. Здесь поможет insert(). Нужно указать номер позиции (отсчет начинается с нуля) и то, что вы хотите вставить.

Пример:
Есть слово "Бревно". Нам нужно получить "Бревнышко".
Мы знаем, что буква “о” стоит на четвертой позиции (опять же, считаем с нуля: Б-0, р-1, е-2, в-3, н-4, о-5). Значит, вставить кусочек "ышк" нужно на позицию 5. Этот кусок вставится в указанную позицию, а остальные буквы (в нашем случае только буква “о”) будут сдвинуты вправо.

-3

Когда применять: Редко, но полезно при обработке текста по правилам, например, в редакторах или играх.

6. Поиск внутри строки

Одна из самых нужных функций. Она называется find(). Вы ищете маленький кусочек внутри большого текста. Функция возвращает номер позиции, с которой этот кусочек начинается.

Пример:
Ищем букву "о" в слове "молоко". Функция найдет первую букву «о» и вернет позицию 1 (напомню, счет идет с нуля: м-0, о-1). В коде может выглядеть так:

Name.find('о');

Когда применять: Когда нужно проверить, есть ли в адресе электронной почты значок «собачка» или есть ли в ссылке нужное слово.

Важное замечание: Если ничего не найдено, функция возвращает особое значение npos. Это как ответ «ничего не найдено». Всегда проверяйте результат поиска.

7. Замена части строки

Функция replace() делает три дела: находит кусок текста по номеру начальной позиции, отсчитывает нужную длину и заменяет этот кусок на ваш текст.

Пример:
Строка "Иванов Иван Иванович". Хотим заменить "Иван" на "Пётр", и получить "Иванов Пётр Иванович".

-4

Обратите внимание, что для поиска мы задали строку "Иван " с пробелом в конце. Если пробел убрать, то будет найдено первое вхождение подстроки, то есть результат будет не такой, как мы хотели, а "Петров Иван Иванович".

Когда применять: Когда нужно исправить опечатки или заменить одно слово на другое в готовом предложении.

8. Очистка

Функция clear() просто удаляет все символы из строки. Строка становится пустой.

Пример: Корзина покупок была заполнена, пользователь нажал «Отмена» — вызываем clear() и начинаем заново.

Когда применять: При сбросе формы или перезапуске процесса.

Какую функцию выбрать для простых задач?

  • Склеить два слова — просто используйте плюс (но с учётом типов данных).
  • Проверить, есть ли в строке буква или слово — find().
  • Узнать длину — length().
  • Очистить все — clear().

Этих восьми функций достаточно, чтобы решить 90% повседневных задач с текстом в C++. Они работают быстро и понятны даже новичкам. Попробуйте каждую в простой программе, и вы быстро запомните, как ими пользоваться.

P.S. Конечно, есть возможность работать со строками без использования #include <string>, но это уже другая история. К тому же зачем мучаться со старыми способами, если есть более современные, которые здесь и рассмотрены. Впрочем, есть и ещё более современные. Но это тоже другая история…

На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.