Строки и 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 — не одно и то же.
