string (C++)

(перенаправлено с «Std::string»)

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. 1 2 3 4 5 6 7 8 9 string::string. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  2. 1 2 3 4 5 string::operator=. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  3. 1 2 string::begin, string::cbegin. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  4. 1 2 string::end, string::cend. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  5. 1 2 string::rbegin, string::crbegin. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  6. 1 2 string::rend, string::crend. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  7. 1 2 string::size. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  8. string::max_size. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  9. 1 2 string::resize. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  10. string::capacity. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  11. string::reserve. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  12. string::clear. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  13. string::empty. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  14. 1 2 string::operator[]. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  15. 1 2 string::at. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  16. 1 2 string::back. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  17. 1 2 string::front. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  18. 1 2 3 4 string::operator+=. Дата обращения: 11 сентября 2021.
  19. 1 2 3 4 5 6 7 string::append. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  20. string::push_back. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  21. 1 2 3 4 5 6 7 8 string::assign. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  22. 1 2 3 4 5 6 7 8 string::insert. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  23. 1 2 3 string::erase. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  24. 1 2 3 4 5 6 7 8 9 10 11 string::replace. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  25. string::swap. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.
  26. string::pop_back. Дата обращения: 11 сентября 2021. Архивировано 11 сентября 2021 года.

Ссылки

править