Файл: Pobegaylo_A._C_Cplus_dlya_studenta.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 13.12.2020

Просмотров: 4111

Скачиваний: 28

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Глава 39. Работа со строками в С++ <string> 

441 

39.2.14. Присваивание строк 

Для  присваивания  строк  друг  другу  в  шаблоне  класса 

basic_string

 перегружены функции 

assign

  basic_string& assign(const basic_string& str); 
  basic_string& assign(const basic_string& str, 
      size_type pos, size_type n); 
  basic_string& assign(const value_type *s, size_type n); 
  basic_string& assign(const value_type *s); 
  basic_string& assign(size_type n, value_type c); 
  template<class InIt> basic_string& assign( 
      InIt first, InIt last); 

Функции 

assign

 предоставляют более широкие возможности при 

присваивании строк, чем оператор присваивания 

=

, т. к. позволя-

ют присваивать объекту типа 

basic_string

 подстроки и заполнять 

строку символом-заполнителем. Все функции 

assign

 возвращают 

модифицированную строку. 
Параметры функций 

assign

 имеют следующее назначение: 

 

pos

 — задает позицию символа в присваиваемой строке, начи-

ная с которого выполняется присваивание; 

 

n

 — задает количество присваиваемых символов. 

Остальные параметры задают строку или символы, которые при-
сваиваются исходной строке. Например: 

  string s; 
  string t("aaa bbb"); 
 
  s.assign(t);             // aaa bbb 
  s.assign(t, 1, 5);       // aa bb 
  s.assign("aaa bbb");     // aaa bbb 
  s.assign("aaa bbb", 3);  // aaa 
  s.assign(3, '!');        // !!! 

Параметры  шаблонной  функции 

assign

  являются  итераторами 

строки  типа 

basic_string

  и  задают  в  этой  строке  подстроку 

[first, last)

, которая присваивается исходной строке.  


background image

Часть IV. Стандартная библиотека языка программирования С++ 

442 

Например: 

  string s; 
  string t("aaa bbb"); 
 
  string::iterator it_beg = t.begin(), it_end = t.end(); 
  s.append(it_beg + 1, it_end - 1);  // s = "aa bb" 

39.2.15. Вставка строк и символов в строку 

Для  вставки  в  строку  другой  строки  типа 

basic_string

,  строки 

языка  программирования  C,  одного  или  нескольких  символов  в 
шаблоне класса 

basic_string

 перегружены функции 

erase

  basic_string& insert(size_type p0, const basic_string& str); 
  basic_string& insert(size_type p0, 
      const basic_string& str, size_type pos, size_type n); 
  basic_string& insert(size_type p0, const value_type *s, 
      size_type n); 
  basic_string& insert(size_type p0, const value_type *s); 
  basic_string& insert(size_type p0, size_type n, 
      value_type c); 
  iterator insert(iterator it, value_type c = value_type()); 
  void insert(iterator it, size_type n, value_type c); 
  template<class InIt> 
       void insert(iterator it, InIt first, InIt last); 

Если функция 

insert

 возвращает значение, то это или модифици-

рованная  строка,  или  итератор,  который  указывает  на  вставлен-
ный символ. 
Параметры функций 

insert

 имеют следующее назначение: 

 

p0

 —  указывает  на  позицию  в  текущей  строке,  с  которой  на-

чинается вставка; 

 

pos

 —  задает  позицию  символа  во  вставляемой  строке,  начи-

ная с которого выполняется вставка; 

 

n

 — задает количество вставляемых символов; 

 

it

 —  итератор,  указывающий  на  позицию  в  текущей  строке,  

с которой начинается вставка. 


background image

Глава 39. Работа со строками в С++ <string> 

443 

Остальные  параметры  задают  строку  или  символы,  которые 
вставляются в исходную строку. Например: 

  string s("aa  cc"); 
  string t("bb"); 
 
  s.insert(3, t);          // s = "aa bb cc" 
  s.insert(3, t, 1, 1);    // s = "aa bbb cc" 
  s.insert(3, "<<");       // s = "aa <<bbb cc" 
  s.insert(8, ">>>>", 2);  // s = "aa <<bbb>> cc" 
  s.insert(8, 3, '-');     // s = "aa <<bbb--->> cc" 
 
  string::iterator it = s.begin(); 
  s.insert(it + 5, 3, '-');  // s = "aa <<---bbb--->> cc" 

Параметры 

first

  и 

last

  шаблонной  функции 

insert

  являются 

итераторами  вставляемой  строки  типа 

basic_string

  и  задают  в 

этой  строке  подстроку 

[first,  last)

,  которая  вставляется  в  ис-

ходную строку. Например: 

  string s("aa  cc"); 
  string t("--bb--"); 
 
  string::iterator it = s.begin(), 
      it_beg = t.begin(), it_end = t.end(); 
  s.insert(it + 3, it_beg + 2, it_end - 2);  // s = "aa bb сс" 

39.2.16. Удаление последовательности 

символов из строки 

Для удаления подстрок или символа из текущей строки в шабло-
не класса 

basic_string

 перегружены функции 

erase

  basic_string& erase(size_type p0 = 0, size_type n = npos); 
  iterator erase(iterator it); 
  iterator erase(iterator first, iterator last); 

Функции 

erase

 возвращают или модифицированную строку, или 

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


background image

Часть IV. Стандартная библиотека языка программирования С++ 

444 

Параметры функций 

erase

 имеют следующее назначение: 

 

p0

 —  указывает  на  позицию  в  текущей  строке,  с  которой  на-

чинается удаление символов; 

 

n

 — задает количество удаляемых символов; 

 

it

 —  итератор,  указывающий  на  позицию  в  текущей  строке,  

с которой начинается удаление символов; 

 

first

  и 

last

 —  задают  интервал 

[first,  last)

  удаляемых 

символов. 

Например: 

  string s("aa bbbb cc"); 
  s.erase(3, 2);  // s = "aa bb cc" 
 
  string::iterator it_beg = s.begin(), it_end = s.end(); 
  s.erase(it_beg + 3);  // s = "aa b cc" 
  s.erase(it_beg + 3, it_end - 3); // s == "aa cc" 

39.2.17. Очистка строки 

Для  очистки  строки  в  шаблоне  класса 

basic_string

  определена 

функция 

clear

  void clear(); 

Эта функция удаляет все символы из строки. 

39.2.18. Замена символов и подстрок  
в строке 

Для  замены  подстроки  в  строке  типа 

basic_string

  на  подстроку 

этого же типа, или подстроку языка программирования С, а также 
для  заполнения  подстроки  символом-заполнителем  в  шаблоне 
класса 

basic_string

 перегружены функции 

replace

  basic_string& replace(size_type p0, size_type n0, 
      const basic_string& str); 
  basic_string& replace(size_type p0, size_type n0, 
      const basic_string& str, size_type pos, size_type n); 


background image

Глава 39. Работа со строками в С++ <string> 

445 

  basic_string& replace(size_type p0, size_type n0, 
      const value_type *s, size_type n); 
  basic_string& replace(size_type p0, size_type n0, 
      const value_type *s); 
  basic_string& replace(size_type p0, size_type n0, 
      size_type n, value_type c); 
  basic_string& replace(iterator first0, iterator last0, 
      const basic_string& str); 
  basic_string& replace(iterator first0, iterator last0, 
      const value_type *s, size_type n); 
  basic_string& replace(iterator first0, iterator last0, 
      const value_type *s); 
  basic_string& replace(iterator first0, iterator last0, 
      size_type n, value_type c); 
  template<class InIt> 
      basic_string& replace(iterator first0, iterator last0, 
          InIt first, InIt last); 

Все функции 

replace

 возвращают модифицированную строку. 

Параметры функций 

replace

 имеют следующее назначение: 

 

p0

 —  указывает  на  позицию  в  текущей  строке,  с  которой  на-

чинается замена символов; 

 

n0

 — задает количество заменяемых символов; 

 

pos

 — задает позицию символа в строке-заместителе, начиная 

с которого выполняется замена; 

 

n

 — задает количество символов в строке-заместителе или ко-

личество символов заполнителей, используемых для замены; 

 

first0

  и 

last0

 —  задают  интервал 

[first0,  last0)

  заменяе-

мых символов в исходной строке. 

Остальные параметры задают строку или символы, которые слу-
жат для замены. Например: 

  string s("--aa--"); 
 
  s.replace(2, 2, string("bbb"));        // "--bbb--" 
  s.replace(2, 3, string("+cc+"), 1, 2); // "--cc--" 
  s.replace(2, 2, "bbbb", 2);            // "--bb--" 


Смотрите также файлы