Стандартная библиотека C++ <string>
Стандартная библиотека C++ (Standard Template Library, STL) — один из основных компонентов C++, предоставляющий богатые структуры данных и алгоритмы.
<string>Это заголовочный файл в стандартной библиотеке C++, используемый для обработки строк.
В C++ строка — это последовательность символов.<string>Заголовочный файл предоставляетstd::stringЭто класс, который инкапсулирует строки в стиле C, обеспечивая более безопасную и удобную работу со строками.
Чтобы использовать в программе на C++<string>библиотеку, сначала нужно подключить этот заголовочный файл:
#include <iostream> #include <string>
Базовый синтаксис
std::stringБазовый синтаксис класса выглядит следующим образом:
-
Объявите строковую переменную:
std::string str;
-
Инициализируйте строку:
std::string str = "Hello, World!";
-
Использование
+Объедините строки:std::string str1 = "Hello, "; std::string str2 = "World!"; std::string result = str1 + str2;
Общие функции-члены
std::stringКласс предоставляет множество функций-членов для работы со строками. Ниже приведены некоторые часто используемые функции-члены:
size(): Возвращает длину строки.empty(): Проверяет, является ли строка пустой.operator[]Доступ к символу в строке по индексу.substr(): Получает подстроку.find()Находит позицию подстроки в основной строке.replace(): Заменяет некоторые символы в строке.
Пример
Ниже приведён простой пример использования<string>библиотеки, включая результаты вывода:
Пример
#include <string>
int main() {
// Объявить и инициализировать строку
std::string greeting = "Hello, World!";
std::cout << "Greeting: " << greeting << std::endl;
// Используйте size() для получения длины строки
std::cout << "Length of the greeting: " << greeting.size() << std::endl;
// Используйте empty() для проверки, пуста ли строка
std::cout << "Приветствие пустое? " << (greeting.empty() ? "Да" : "Нет") << std::endl;
// Используйте operator[] для доступа к символу в определённой позиции
std::cout << "Символ в позиции 7: " << greeting[7] << std::endl;
// Используйте substr() для получения подстроки
std::string sub = greeting.substr(7, 5);
std::cout << "Подстрока с позиции 7 длиной 5: " << sub << std::endl;
// Используйте find() для поиска подстроки
std::cout << "Позиция 'World' в приветствии: " << greeting.find("World") << std::endl;
// Используйте replace() для замены части строки
// Замените 'World' на 'C++'
std::string modified = greeting;
std::string::size_type pos = modified.find("World");
if (pos != std::string::npos) {
modified.replace(pos, 5, "C++"); // Начиная с позиции pos, заменить 5 символов на "C++"
}
std::cout << "Изменённое приветствие: " << modified << std::endl;
return 0;
}
Вывод:
Length of the greeting: 13 Is the greeting empty? No Character at position 7: W Substring from position 7 with length 5: World Position of 'World' in the greeting: 7 Modified greeting: Hello, C++!
Сводная таблица функций-членов std::string
Ниже приведена сводка часто используемых функций-членов std::string:| Имя функции | Описание | Пример кода |
|---|---|---|
size() | Возвращает длину строки (количество символов). | std::cout << str.size(); |
length() | иsize()Аналогично, возвращает длину строки. | std::cout << str.length(); |
empty() | Определяет, является ли строка пустой. | std::cout << (str.empty() ? "Yes" : "No"); |
operator[] | Обращается к символу в указанной позиции строки. | std::cout << str[0]; |
at() | Доступ к символу в указанной позиции в строке (с проверкой границ). | std::cout << str.at(0); |
substr() | Возвращает подстроку, начиная с указанной позиции. | std::string sub = str.substr(0, 5); |
find() | Находит позицию подстроки в строке. | std::cout << str.find("sub") << std::endl; |
rfind() | Находит позицию подстроки, начиная поиск с конца строки. | std::cout << str.rfind("sub") << std::endl; |
replace() | Заменяет часть содержимого в строке. | str.replace(pos, length, "new_substring"); |
append() | Добавляет содержимое в конец строки. | str.append(" more"); |
insert() | Вставляет содержимое в указанную позицию. | str.insert(pos, "inserted"); |
erase() | Удаляет символ или подстроку в указанной позиции. | str.erase(pos, length); |
clear() | Очищает строку. | str.clear(); |
c_str() | Возвращает C-строку (с завершающим нулевым символом). | const char* cstr = str.c_str(); |
data() | Возвращает указатель на символьные данные (C++11 и новее). | const char* data = str.data(); |
compare() | Сравнивает две строки. | int result = str.compare("other"); |
find_first_of() | Найдите позицию первого символа, совпадающего с любым из указанных символов. | size_t pos = str.find_first_of("aeiou"); |
find_last_of() | Найдите позицию последнего символа, совпадающего с любым из указанных символов. | size_t pos = str.find_last_of("aeiou"); |
find_first_not_of() | Найдите позицию первого символа, не совпадающего ни с одним из указанных символов. | size_t pos = str.find_first_not_of("aeiou"); |
find_last_not_of() | Найдите позицию последнего символа, не совпадающего ни с одним из указанных символов. | size_t pos = str.find_last_not_of("aeiou"); |
Пример
#include <string>
int main() {
std::string str = "Привет, мир!";
// size()
std::cout << "Длина: " << str.size() << std::endl;
// empty()
std::cout << "Пусто? " << (str.empty() ? "Да" : "Нет") << std::endl;
// operator[]
std::cout << "Первый символ: " << str[0] << std::endl;
// at()
std::cout << "Символ в позиции 7: " << str.at(7) << std::endl;
// substr()
std::string sub = str.substr(7, 5);
std::cout << "Подстрока с позиции 7 длиной 5: " << sub << std::endl;
// find()
size_t pos = str.find("Мир");
std::cout << "Позиция 'Мир': " << pos << std::endl;
// replace()
str.replace(pos, 5, "C++");
std::cout << "Изменённая строка: " << str << std::endl;
// append()
str.append(" Как дела?");
std::cout << "Добавленная строка: " << str << std::endl;
// insert()
str.insert(7, " Красивый");
std::cout << "Строка после insert: " << str << std::endl;
// erase()
str.erase(7, 10);
std::cout << "Строка после erase: " << str << std::endl;
// clear()
str.clear();
std::cout << "Строка после clear: " << (str.empty() ? "Пустая" : "Не пустая") << std::endl;
// c_str()
str = "Привет, C++!";
const char* cstr = str.c_str();
std::cout << "Строка в стиле C: " << cstr << std::endl;
// compare()
int cmp = str.compare("Привет, C++!");
std::cout << "Результат сравнения: " << cmp << std::endl;
// find_first_of()
size_t pos_first_vowel = str.find_first_of("aeiou");
std::cout << "Первая гласная на позиции: " << pos_first_vowel << std::endl;
// find_last_of()
size_t pos_last_vowel = str.find_last_of("aeiou");
std::cout << "Последняя гласная на позиции: " << pos_last_vowel << std::endl;
// find_first_not_of()
size_t pos_first_non_vowel = str.find_first_not_of("aeiou");
std::cout << "First non-vowel at position: " << pos_first_non_vowel << std::endl;
// find_last_not_of()
size_t pos_last_non_vowel = str.find_last_not_of("aeiou");
std::cout << "Last non-vowel at position: " << pos_last_non_vowel << std::endl;
return 0;
}
Вывод:
Length: 13 Is empty? No First character: H Character at position 7: W Substring from position 7 with length 5: World Position of 'World': 7 Modified string: Hello, C++! Appended string: Hello, C++! How are you? String after insert: Hello, BeautifulC++! How are you? String after erase: Hello, C++! How are you? String after clear: Empty C-style string: Hello, C++! Comparison result: 0 First vowel at position: 1 Last vowel at position: 4 First non-vowel at position: 0 Last non-vowel at position: 10Другие расширения