ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 13.12.2020
Просмотров: 4252
Скачиваний: 28
Глава 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)
, которая присваивается исходной строке.
Часть 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
— итератор, указывающий на позицию в текущей строке,
с которой начинается вставка.
Глава 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
возвращают или модифицированную строку, или
итератор, указывающий на символ, следующий за последним
удаленным символом.
Часть 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);
Глава 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--"