Статьи

Учебные материалы по языку C++ — от основ до продвинутых тем

Строки и std::string

Страница 15 из 43 · 2026-10-25 · 2 мин чтения

Строки и std::string

std::string

Для текста в большинстве программ C++ используй std::string из заголовка <string>:

#include <iostream>#include <string>std::string name = "Alex";std::cout << "Привет, " << name << "!\n";

Строки можно объединять оператором + или добавлять к ним текст через +=.

Размер и доступ к символам

std::string text = "hello";std::cout << text.size() << '\n';std::cout << text[0] << '\n';text[0] = 'H';

size() возвращает количество элементов char, а не обязательно количество видимых символов. UTF-8-символы, например многие русские буквы, могут занимать несколько байтов. Поэтому индексирование std::string не является полноценной операцией над Unicode-символами.

Ввод строки

std::cin >> text читает только до пробельного символа. Для целой строки используй std::getline:

std::string fullName;std::getline(std::cin, fullName);

Если перед getline был ввод через operator>>, в потоке может остаться символ новой строки. В таком случае часто помогает std::getline(std::cin >> std::ws, fullName), если пропуск ведущих пробелов допустим.

Поиск и замена

std::string text = "red blue red";auto position = text.find("blue");if (position != std::string::npos) {    text.replace(position, 4, "green");}

find() возвращает std::string::npos, если совпадение не найдено. Не считай нулевую позицию признаком отсутствия результата: найденная подстрока может начинаться с индекса 0.

Полезные методы

  • empty() — строка пуста.
  • clear() — очистить строку.
  • append() — добавить текст.
  • substr(pos, count) — получить подстроку.
  • find() / rfind() — поиск слева направо / справа налево.
  • erase() — удалить часть строки.

Итог

std::string — основной инструмент для обычного текста. Помни о различии между вводом слова и всей строки, а также о том, что UTF-8 и индексы char — не одно и то же.