
- •Определения производных типов (специализация)
- •Операторы
- •Отдельная функция
- •Определения типов, встроенные в класс
- •Конструкторы
- •Потоки ввода-вывода
- •Форматирование вывода
- •Файловый ввод-вывод
- •Обработка исключений
- •Контейнеры, итераторы и алгоритмы
- •Вариант
- •Вариант
- •Вариант
- •Вариант
- •Вариант
- •Вариант
- •Вариант
- •Вариант
- •Вариант
- •Вариант
- •Вариант
- •Вариант
- •Вариант
- •Вариант
- •Вариант
- •Вариант
- •Вариант
- •Вариант
- •Вариант
- •Вариант
Кафедра Компьютерных методов физики: программирование, первый курс, второй семестр
Язык программирования C++
Иванов А.П., Князева О.С.
Семинар 7. Строковые классы C++. Потоки ввода-вывода. Обработка исключений.
Строковые классы C++
Строковый шаблонный класс STL и его наиболее употребимые специализации (инстанцирования) определены в заголовочном файле <string>. Предназначен этот класс, главным образом, для удобной работы с текстовыми строками, однако, так как этот класс шаблонный – он может использоваться и для реализации строк, состоящих не только из символов типа char.
Конечно, что-то похожее можно было бы реализовать и на основе vector<char>, однако, реализация отдельного шаблона позволила решить следующие задачи:
расширенный набор функций, аналоги которых были определены в языке C: поиск, сравнение, копирование строк и т.п.;
более экономная реализация, позволяющая избежать лишних копирований и аллокаций памяти по сравнению с классом vector (тактика copy-on-write).
Основной шаблонный класс, в котором сосредоточена вся функциональность:
template <
class CharType,
class Traits=char_traits<CharType>,
class Allocator=allocator<CharType>
>
class basic_string;
Важнейший параметр шаблона – первый, он определяет, какой тип будет сохраняться в данном контейнере. Два других параметра имеют значения по умолчанию и, как правило, задаются явно только в очень специальных случаях.
Определения производных типов (специализация)
string |
специализация basic_string<char>, представляющая собой строку из обычных символов. |
wstring |
специализация basic_string<wchar_t>, представляющая собой строку из обычных символов в двухбайтовой кодировке Unicode. |
Операторы
Часть операторов реализована как внеклассовые шаблонные функции, а другая часть – как члены класса basic_string.
operator[] |
Возвращает ссылку (которой можно присваивать значение) на символ строки, имеющий указанный номер по порядку от начала. |
operator= |
Оператор присваивания строке, имеет несколько разных реализаций по типу аргумента: присваивание другой строки, одиночного символа и ли строки языка C типа char*. |
operator+ operator+= |
Добавление второй строки в конец первой. Аналогично оператору присваивания – допускает аргументы разных типов (C++ строка, C строка, одиночный символ). |
operator!= operator== operator< operator<= operator> operator>= |
Операторы сравнения двух строк. |
operator<< operator>> |
Операторы ввода и вывода строки в поток (например, cin или cout). |
Отдельная функция
getline |
Позволяет читать входной поток (такой, как cin) построчно, присваивает очередную считанную строку указанной переменной: string s1; cout << "Enter a sentence:" << endl << flush; getline(cin,s1); |
Определения типов, встроенные в класс
iterator const_iterator |
Аналогично прочим STL-контейнерам, со строкой можно оперировать при помощи итераторов (обобщения указателей). |
npos |
Специальный тип (эквивалентный целочисленной «минус единице»), предназначенный для сигнализации о неуспехе поиска в строке. |
Конструкторы
basic_string |
Конструкторы, в зависимости от типа своего аргумента позволяют создать строку из строки C, другой C++ строки, одиночного символа или заданного их количества, а также – создать пустую строку. |
Member Functions
size length empty resize |
Returns the current number of elements in a string. Tests whether the string is contains characters or not. Specifies a new size for a string, appending or erasing elements as required. |
reserve capacity |
Sets the capacity of the string to a number at least as great as a specified number. Returns the largest number of elements that could be stored in a string without increasing the memory allocation of the string. |
assign append |
Аналогично operator= и operator+= присваивают или дописывают в конец данной строки – другую строку, однако, в отличие от соответствующих операторов, содержат по нескольку вариантов с дополнительными аргументами, позволяющими выполнить копирование только части строки. |
at |
Аналогично operator[] возвращает ссылку на символ строки с заданным номером, однако, в отличие от него выполняет строгую проверку индекса на попадание в диапазон допустимых значений и выбрасывает exception (см. ниже) в случае неуспеха. |
begin end |
Returns an iterator addressing the first element in the string. |
c_str data |
Converts the contents of a string as a C-style, null-terminated, string. |
erase clear |
Erases all elements of a string. Removes an element or a range of elements in a string from a specified position. |
compare |
Compares a string with a specified string to determine if the two strings are equal or if one is lexicographically less than the other. |
copy |
Copies at most a specified number of characters from an indexed position in a source string to a target character array. Deprecated. Use basic_string::_Copy_s instead. |
insert |
Inserts an element or a number of elements or a range of elements into the string at a specified position. |
push_back |
Adds an element to the end of the string. |
replace |
Replaces elements in a string at a specified position with specified characters or characters copied from other ranges or strings or C-strings. |
substr |
Copies a substring of at most some number of characters from a string beginning from a specified position. |
find |
Searches a string in a forward direction for the first occurrence of a substring that matches a specified sequence of characters. |
find_first_not_of |
Searches through a string for the first character that is not any element of a specified string. |
find_first_of |
Searches through a string for the first character that matches any element of a specified string. |
find_last_not_of |
Searches through a string for the last character that is not any element of a specified string. |
find_last_of |
Searches through a string for the last character that is an element of a specified string. |
rfind |
Searches a string in a backward direction for the first occurrence of a substring that matches a specified sequence of characters. |