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;
// в Си: printf(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 2 3 4 5 6 7 8 9 string::string . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ 1 2 3 4 5 string::operator= . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ 1 2 string::begin, string::cbegin . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ 1 2 string::end, string::cend . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ 1 2 string::rbegin, string::crbegin . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ 1 2 string::rend, string::crend . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ 1 2 string::size . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ string::max_size . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ 1 2 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 года.
- ↑ 1 2 string::operator[] . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ 1 2 string::at . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ 1 2 string::back . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ 1 2 string::front . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ 1 2 3 4 string::operator+= . Дата обращения: 11 сентября 2021.
- ↑ 1 2 3 4 5 6 7 string::append . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ string::push_back . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ 1 2 3 4 5 6 7 8 string::assign . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ 1 2 3 4 5 6 7 8 string::insert . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ 1 2 3 string::erase . Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
- ↑ 1 2 3 4 5 6 7 8 9 10 11 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.