string (C++)
string — класс с методами и переменными для организации работы со строками в языке программирования C++. Он включён в стандартную библиотеку C++. Название образовано от имени строчного типа данных (англ. string; с англ. — «строка»). В языке C++ и его предшественнике, языке программирования Си, нет встроенной поддержки строкового типа данных, вместо этого используется массив символов. string управляет строками, как и string.h в Си. string использует единственный объект string для организации работы со строками. Являясь частью стандартной библиотеки C++, эти объекты также являются частью стандартного пространства имён — std.
Пример
Простейшая программа «Hello, world!» (с использованием библиотеки iostream) может быть записана так:
#include <iostream>
#include <string>
using namespace std; // в Си: #include <string.h>
int main()
{
string str = "Hello, world!";
cout << str << endl;
// в Си: puts(str);
return 0;
}
Используемые типы
Тип | Описание |
---|---|
value_type | char |
traits_type | char_traits<char> |
allocator_type | allocator<char> |
reference | char& |
const_reference | const char& |
pointer | char* |
const_pointer | const char* |
iterator | a random access iterator to char (convertible to const_iterator) |
const_iterator | a random access iterator to const char |
reverse_iterator | reverse_iterator<iterator> |
const_reverse_iterator | reverse_iterator<const_iterator> |
difference_type | ptrdiff_t |
size_type | size_t |
Методы
Конструктор
Публичная функция
string();
- Создает пустую строку[1].
string(const string& str);
- Копирующий конструктор[1].
string(const string& str, size_t pos, size_t len = npos);
- Копирующий конструктор со смещением и определенной длиной считываемой строки[1].
string(const char* s);
- Конструктор, принимающий указатель на строку символов[1].
string(const char* s, size_t n);
- Конструктор, принимающий указатель на строку символов с ограничением по длине считываемой строки[1].
string(size_t n, char c);
- Конструктор, заполняющий одним символом n ячеек[1].
template <class InputIterator> string(InputIterator first, InputIterator last);
- Конструктор, копирующий последовательность символов в диапазоне[1].
string(initializer_list<char> il);
- Конструктор, копирующий инициализирующий список[1].
string(string&& str) noexcept;
- Конструктор, получающий содержимое строки[1].
Деструктор
String destructor (public member function)
Оператор присваивания
string& operator= (const string& str);
- Оператор реализующий присваивание переменной типа
string
[2].
string& operator= (const char* s);
- Оператор реализующий присваивание указателя на строку[2].
string& operator= (char c);
- Оператор реализующий присваивание переменной типа
char
[2].
string& operator= (initializer_list<char> il);
- Оператор реализующий присваивание к списку инициализации из типов
char
[2].
string& operator= (string&& str) noexcept;
- Оператор реализующий перемещение[неопределённость] содержания переменной внутрь левого значения[2].
Итераторы
begin()
- Возвращает итератор с первым элементом[3].
end()
- Возвращает итератор с последним элементом[4].
rbegin()
- Возвращает итератор с последним элементом, но идущим в реверсивном порядке (от конца к началу)[5].
rend()
- Возвращает итератор с первым элементом, но идущим в реверсивном порядке (от конца к началу)[6].
cbegin()
- Возвращает константный итератор с первым элементом[3].
cend()
- Возвращает константный итератор с последним элементом[4].
crbegin()
- Возвращает константный итератор с последним элементом, но идущим в реверсивном порядке (от конца к началу)[5].
crend()
- Возвращает константный итератор с первым элементом, но идущим в реверсивном порядке (от конца к началу)[6].
Методы
size_t size() const noexcept
- Возвращает текущее количество символов в строке[7].
size_t length() const noexcept
- Возвращает текущее количество символов в строке[7].
size_t max_size() const noexcept
- Возвращает максимально возможную длину строки[8].
void resize(size_t n);
- Изменяет размер длины строки[9].
void resize(size_t n, char c);
- Изменяет размер длины строки и заполняет строку указанным символом[9].
size_t capacity() const noexcept
- Возвращает длину строки выделенной памяти[10].
void reserve(size_t n = 0)
- Резервирует память для n символов[11].
void clear() noexcept
- Очищает строку[12].
bool empty() const noexcept
- Возвращает булев флаг о том, пуста ли строка[13].
shrink_to_fit()
Элементы доступа
char& operator[] (size_t pos)
- Возвращает символ находящийся по индексу в строке начиная с 0 до
size() - 1
[14].
const char& operator[] (size_t pos) const
- Возвращает константный символ находящийся по индексу в строке начиная с 0 до
size() - 1
[14].
char& at (size_t pos)
- Возвращает ссылку на символ, указанный в
pos
[15].
const char& at (size_t pos) const
- Возвращает константную ссылку на символ, указанный в
pos
[15].
char& back()
- Возвращает ссылку на последний символ строки[16].
const char& back() const
- Возвращает константную ссылку на последний символ строки[16].
char& front()
- Возвращает ссылку на первый символ строки[17].
const char& front() const
- Возвращает константную ссылку на первый символ строки[17].
Модификаторы
string& operator+= (const string& str);
- Конкатенация со строкой[18].
string& operator+= (const char* s);
- Конкатенация со строкой[18].
string& operator+= (char c);
- Конкатенация со строкой[18].
string& operator+= (initializer_list<char> il);
- Конкатенация со строкой[18].
string& append (const string& str);
- Конкатенация со строкой[19].
string& append (const string& str, size_t subpos, size_t sublen);
- Конкатенация со строкой[19].
string& append (const char* s);
- Конкатенация со строкой[19].
string& append (const char* s, size_t n);
- Конкатенация со строкой[19].
string& append (size_t n, char c);
- Конкатенация со строкой[19].
template <class InputIterator> string& append (InputIterator first, InputIterator last);
- Конкатенация со строкой[19].
string& append (initializer_list<char> il);
- Конкатенация со строкой[19].
void push_back (char c);
- Добавить символ в конец строки[20].
string& assign (const string& str);
- Задать новое значение для строки[21].
string& assign (const string& str, size_t subpos, size_t sublen);
- Задать новое значение для строки[21].
string& assign (const char* s);
- Задать новое значение для строки[21].
string& assign (const char* s, size_t n);
- Задать новое значение для строки[21].
string& assign (size_t n, char c);
- Задать новое значение для строки[21].
template <class InputIterator> string& assign (InputIterator first, InputIterator last);
- Задать новое значение для строки[21].
string& assign (initializer_list<char> il);
- Задать новое значение для строки[21].
string& assign (string&& str) noexcept;
- Задать новое значение для строки[21].
string& insert (size_t pos, const string& str);
- Вставить символ до указанной позиции в
pos
[22].
string& insert (size_t pos, const string& str, size_t subpos, size_t sublen);
- Вставить символ до указанной позиции в
pos
[22].
string& insert (size_t pos, const char* s);
- Вставить символ до указанной позиции в
pos
[22].
string& insert (size_t pos, const char* s, size_t n);
- Вставить символ до указанной позиции в
pos
[22].
string& insert (size_t pos, size_t n, char c);
- Вставить символ до указанной позиции в
pos
[22].
void insert (iterator p, size_t n, char c);
- Вставить символ до указанной позиции в
pos
[22].
iterator insert (iterator p, char c);
- Вставить символ до указанной позиции в
pos
[22].
template <class InputIterator> void insert (iterator p, InputIterator first, InputIterator last);
- Вставить символ до указанной позиции в
pos
[22].
string& erase (size_t pos = 0, size_t len = npos);
- Стирает символ(ы) из строки[23].
iterator erase (const_iterator p);
- Стирает символ(ы) из строки[23].
iterator erase (const_iterator first, const_iterator last);
- Стирает символ(ы) из строки[23].
string& replace (size_t pos, size_t len, const string& str);
- Заменяет содержимое строки[24].
string& replace (const_iterator i1, const_iterator i2, const string& str);
- Заменяет содержимое строки[24].
string& replace (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen);
- Заменяет содержимое строки[24].
string& replace (size_t pos, size_t len, const char* s);
- Заменяет содержимое строки[24].
string& replace (const_iterator i1, const_iterator i2, const char* s);
- Заменяет содержимое строки[24].
string& replace (size_t pos, size_t len, const char* s, size_t n);
- Заменяет содержимое строки[24].
string& replace (const_iterator i1, const_iterator i2, const char* s, size_t n);
- Заменяет содержимое строки[24].
string& replace (size_t pos, size_t len, size_t n, char c);
- Заменяет содержимое строки[24].
string& replace (const_iterator i1, const_iterator i2, size_t n, char c);
- Заменяет содержимое строки[24].
template <class InputIterator> string& replace (const_iterator i1, const_iterator i2, InputIterator first, InputIterator last);
- Заменяет содержимое строки[24].
string& replace (const_iterator i1, const_iterator i2, initializer_list<char> il);
- Заменяет содержимое строки[24].
void swap (string& str);
- Меняет содержимое текущей строки на
str
[25].
void pop_back();
- Удаляет последний символ из строки[26].
Операции
c_str
- Отдаёт содержимое строки в типе char
data
Возвращает внутренний контейнер в типе char
get_allocator
copy
find
rfind
find_first_of
- Возвращает индекс с первым вхождением
find_last_of
find_first_not_of
find_last_not_of
substr(pos, n)
- -Bозвращает n символов строки str начиная с позиции pos
compare
npos
operator+
relational operators
swap
- Меняет местами двух переменных
operator>>
operator<<
getline
Примечания
- ↑ Перейти обратно: 1,0 1,1 1,2 1,3 1,4 1,5 1,6 1,7 1,8 string::string . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ Перейти обратно: 2,0 2,1 2,2 2,3 2,4 string::operator= . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ Перейти обратно: 3,0 3,1 string::begin, string::cbegin . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ Перейти обратно: 4,0 4,1 string::end, string::cend . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ Перейти обратно: 5,0 5,1 string::rbegin, string::crbegin . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ Перейти обратно: 6,0 6,1 string::rend, string::crend . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ Перейти обратно: 7,0 7,1 string::size . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ string::max_size . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ Перейти обратно: 9,0 9,1 string::resize . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ string::capacity . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ string::reserve . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ string::clear . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ string::empty . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ Перейти обратно: 14,0 14,1 string::operator[] . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ Перейти обратно: 15,0 15,1 string::at . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ Перейти обратно: 16,0 16,1 string::back . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ Перейти обратно: 17,0 17,1 string::front . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ Перейти обратно: 18,0 18,1 18,2 18,3 string::operator+= . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ Перейти обратно: 19,0 19,1 19,2 19,3 19,4 19,5 19,6 string::append . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ string::push_back . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ Перейти обратно: 21,0 21,1 21,2 21,3 21,4 21,5 21,6 21,7 string::assign . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ Перейти обратно: 22,0 22,1 22,2 22,3 22,4 22,5 22,6 22,7 string::insert . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ Перейти обратно: 23,0 23,1 23,2 string::erase . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ Перейти обратно: 24,00 24,01 24,02 24,03 24,04 24,05 24,06 24,07 24,08 24,09 24,10 string::replace . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ string::swap . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ string::pop_back . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
Ссылки
- 3.4.2. Класс string (недоступная ссылка). Дата обращения: 27 марта 2014. Архивировано 9 февраля 2014 года.
- std::string . Дата обращения: 27 марта 2014.