Шаг 365.
Библиотека STL.
Строки. Описание строковых классов. Аргументы операций со строками

    На этом шаге мы рассмотрим особенности использования аргументов в строковых операциях.

    Стандартная библиотека поддерживает множество операций, предназначенных для работы со строками. В частности, операции, изменяющие содержимое строки, обычно существуют в нескольких перегруженных версиях, в которых новое значение задается одним, двумя или тремя аргументами. Во всех операциях такого рода используется схема передачи аргументов, представленная в таблице 1.

Таблица 1. Схема передачи аргументов строковых операций
Операция Описание
const string& str Вся строка str
const string& str, size_type idx, size_type num He более первых num символов str, начиная с индекса idx
const char* str Вся С-строка
const char* chars, size_type len Первые len символов символьного массива chars
char c Символ c
size_type num, char с Num экземпляров символа c
iterator beg, iterator end Все символы в интервале [beg,end)

    Обратите внимание: только в одноаргументной версии с передачей char* символ \0 интерпретируется как специальный символ, завершающий строку. В остальных случаях \0 не считается специальным символом.

std::string s1("nico");    // s1 инициализируется символами n, i, c, о 
std::string s2("nico",5);  // s2 инициализируется символами n, i, c, о, \0 
std::string s3(5,'\0');    // s3 инициализируется символами \0, \0, \0, \0, \0
s1.length()	// Результат равен 4
s2.length()	// Результат равен 5
s3.length()	// Результат равен 5

    Таким образом, в общем случае строка состоит из произвольных символов. Например, в нее можно загрузить содержимое двоичного файла.

    В таблице 2 приведена краткая сводка аргументов, используемых различными операциями.

Таблица 2. Операции со строковыми параметрами
  Полная строка Часть строки С-строка (char*) Массив char Отдельный символ num символов Интервал итераторов
Конструкторы Да Да Да Да - Да Да
= Да - Да - Да - -
assign() Да Да Да Да - Да Да
+= Да - Да - Да - -
append() Да Да Да Да - Да Да
push_back() - - - - Да - -
insert(), индексная версия Да Да Да Да - Да -
insert(), итераторная версия - - - - Да Да Да
replace (), индексная версия Да Да Да Да Да Да -
replace (), итераторная версия Да - Да Да - Да Да
Поисковые функции Да - Да Да Да - -
+ Да - Да - Да - -
==, !=, <, <=, >, >= Да - Да - - - -
compare() Да Да Да Да - - -

    На следующем шаге мы рассмотрим отсутствующие операции.




Предыдущий шаг Содержание Следующий шаг