string (C++)

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Стандартная библиотека языка программирования C++
Стандартная библиотека шаблонов
C++11
Стандартная библиотека языка программирования Си

string — класс с функциями и переменными для организации работы со строками в языке программирования C++. Он включён в стандартную библиотеку C++. Название образовано от имени строчного типа данных (англ. string). В языке C++ и его предшественнике, языке программирования Си, нет встроенной поддержки строкового типа данных, вместо этого используется массив символов. string управляет строками, как и string.h в Си. string использует единственный объект string для организации работы со строками. Являясь частью стандартной библиотеки C++, эти объекты также являются частью стандартного пространства имён — std.

Пример[править | править вики-текст]

Простейшая программа «Hello, world!» (с использованием библиотеки iostream) может быть записана так:

#include <iostream>
#include <string>                       // в Си: #include <string.h>

int main()
{
  std::string str = "Hello, world!";
  std::cout << str << std::endl;	// в Си: printf("Hello, World!\n");
  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[1].

string& operator= (const char* s);

Оператор реализующий присваивание указателя на строку[1].

string& operator= (char c);

Оператор реализующий присваивание переменной типа char[1].

string& operator= (initializer_list<char> il);

Оператор реализующий присваивание к списку инициализации из типов char[1].

string& operator= (string&& str) noexcept;

Оператор реализующий перемещение[неопределённость] содержания переменной внутрь левого значения[1].

Итераторы[править | править вики-текст]

begin()

Возвращает итератор с первым элементом[1].

end()

Возвращает итератор с последним элементом[1].

rbegin()

Возвращает итератор с последним элементом, но идущим в реверсивном порядке (от конца к началу)[1].

rend()

Возвращает итератор с первым элементом, но идущим в реверсивном порядке (от конца к началу)[1].

cbegin()

Возвращает константный итератор с первым элементом[1].

cend()

Возвращает константный итератор с последним элементом[1].

crbegin()

Возвращает константный итератор с последним элементом, но идущим в реверсивном порядке (от конца к началу)[1].

crend()

Возвращает константный итератор с первым элементом, но идущим в реверсивном порядке (от конца к началу)[1].

Методы[править | править вики-текст]

size_t size() const noexcept

Возвращает текущую длину строки[1].

size_t length() const noexcept

Возвращает текущую длину строки[1].

size_t max_size() const noexcept

Возвращает максимально возможную длину строки[1].

void resize(size_t n);

Изменяет размер длины строки[1].

void resize(size_t n, char c);

Изменяет размер длины строки и заполняет строку указанным символом[1].

size_t capacity() const noexcept

Возвращает длину строки выделенной памяти[1].

void reserve(size_t n = 0)

Резервирует память для n символов[1].

void clear() noexcept

Очищает строку[1].

bool empty() const noexcept

Возвращает булев флаг о том, пуста ли строка[1].

shrink_to_fit()

Элементы доступа[править | править вики-текст]

char& operator[] (size_t pos)

Возвращает символ находящийся по индексу в строке начиная с 0 до size() - 1[1].

const char& operator[] (size_t pos) const

Возвращает константный символ находящийся по индексу в строке начиная с 0 до size() - 1[1].

char& at (size_t pos)

Возвращает ссылку на символ, указанный в pos[1].

const char& at (size_t pos) const

Возвращает константную ссылку на символ, указанный в pos[1].

char& back()

Возвращает ссылку на последний символ строки[1].

const char& back() const

Возвращает константную ссылку на последний символ строки[1].

char& front()

Возвращает ссылку на первый символ строки[1].

const char& front() const

Возвращает константную ссылку на первый символ строки[1].

Модификаторы[править | править вики-текст]

string& operator+= (const string& str);

Конкатенация со строкой[1].

string& operator+= (const char* s);

Конкатенация со строкой[1].

string& operator+= (char c);

Конкатенация со строкой[1].

string& operator+= (initializer_list<char> il);

Конкатенация со строкой[1].

string& append (const string& str);

Конкатенация со строкой[1].

string& append (const string& str, size_t subpos, size_t sublen);

Конкатенация со строкой[1].

string& append (const char* s);

Конкатенация со строкой[1].

string& append (const char* s, size_t n);

Конкатенация со строкой[1].

string& append (size_t n, char c);

Конкатенация со строкой[1].

template <class InputIterator> string& append (InputIterator first, InputIterator last);

Конкатенация со строкой[1].

string& append (initializer_list<char> il);

Конкатенация со строкой[1].

void push_back (char c);

Добавить символ в конец строки[1].

string& assign (const string& str);

Задать новое значение для строки[1].

string& assign (const string& str, size_t subpos, size_t sublen);

Задать новое значение для строки[1].

string& assign (const char* s);

Задать новое значение для строки[1].

string& assign (const char* s, size_t n);

Задать новое значение для строки[1].

string& assign (size_t n, char c);

Задать новое значение для строки[1].

template <class InputIterator> string& assign (InputIterator first, InputIterator last);

Задать новое значение для строки[1].

string& assign (initializer_list<char> il);

Задать новое значение для строки[1].

string& assign (string&& str) noexcept;

Задать новое значение для строки[1].

string& insert (size_t pos, const string& str);

Вставить символ до указанной позиции в pos[1].

string& insert (size_t pos, const string& str, size_t subpos, size_t sublen);

Вставить символ до указанной позиции в pos[1].

string& insert (size_t pos, const char* s);

Вставить символ до указанной позиции в pos[1].

string& insert (size_t pos, const char* s, size_t n);

Вставить символ до указанной позиции в pos[1].

string& insert (size_t pos, size_t n, char c);

Вставить символ до указанной позиции в pos[1].

void insert (iterator p, size_t n, char c);

Вставить символ до указанной позиции в pos[1].

iterator insert (iterator p, char c);

Вставить символ до указанной позиции в pos[1].

template <class InputIterator> void insert (iterator p, InputIterator first, InputIterator last);

Вставить символ до указанной позиции в pos[1].

string& erase (size_t pos = 0, size_t len = npos);

Стирает символ(ы) из строки[1].

iterator erase (const_iterator p);

Стирает символ(ы) из строки[1].

iterator erase (const_iterator first, const_iterator last);

Стирает символ(ы) из строки[1].

string& replace (size_t pos, size_t len, const string& str);

Заменяет содержимое строки[1].

string& replace (const_iterator i1, const_iterator i2, const string& str);

Заменяет содержимое строки[1].

string& replace (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen);

Заменяет содержимое строки[1].

string& replace (size_t pos, size_t len, const char* s);

Заменяет содержимое строки[1].

string& replace (const_iterator i1, const_iterator i2, const char* s);

Заменяет содержимое строки[1].

string& replace (size_t pos, size_t len, const char* s, size_t n);

Заменяет содержимое строки[1].

string& replace (const_iterator i1, const_iterator i2, const char* s, size_t n);

Заменяет содержимое строки[1].

string& replace (size_t pos, size_t len, size_t n, char c);

Заменяет содержимое строки[1].

string& replace (const_iterator i1, const_iterator i2, size_t n, char c);

Заменяет содержимое строки[1].

template <class InputIterator> string& replace (const_iterator i1, const_iterator i2, InputIterator first, InputIterator last);

Заменяет содержимое строки[1].

string& replace (const_iterator i1, const_iterator i2, initializer_list<char> il);

Заменяет содержимое строки[1].

void swap (string& str);

Меняет содержимое текущей строки на str[1].

void pop_back();

Удаляет последний символ из строки[1].

Операции[править | править вики-текст]

c_str

data

get_allocator

copy

find

rfind

find_first_of

find_last_of

find_first_not_of

find_last_not_of

substr

compare

npos

operator+

relational operators

swap

operator>>

operator<<

getline

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]