Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
###Cpp_лкц1_1.09_11_#дляБАК#29_01_12.doc
Скачиваний:
39
Добавлен:
29.04.2019
Размер:
6.42 Mб
Скачать

Глава 11. Строки

289

Вторая форма присваивает вызывающей строке часть строки str, начиная с позиции pos1. Если pos больше длины строки, порождается исключение out_of_range. Вызывающей строке присваивается п символов, либо, если pos + п больше, чем длина строки str, все символы до конца строки str.

Третья форма присваивает вызывающей строке п символов строки s старого типа.

Для добавления части одной строки к другой служит функция append:

append(const string& str);

append(const string& str, size_type pos. size_type n);

append(const char* s. size_type n);

Первая форма функции добавляет строку str к концу вызывающей строки, при этом действие функции эквивалентно операции конкатенации (+).

Вторая форма добавляет к вызывающей строке часть строки str, начиная с позиции pos. Если pos больше длины строки, порождается исключение out_of_range. К вызывающей строке добавляется п символов, либо, если pos + п больше, чем длина строки str, все символы до конца строки str. Если длина результата больше максимально допустимой длины строки, порождается исключение length_error.

Третья форма добавляет к вызывающей строке п символов строки s старого типа.

Преобразования строк

Для вставки в одну строку части другой строки служит функция insert:

insert(size__type posl, const string& str);

insert(size__type posl. const string& str, size_type pos2, size_type n);

insert(size__type pos, const char* s. size_type n);

Первая форма функции вставляет строку str в вызывающую строку, начиная с позиции posl вызывающей строки. Иными словами, вызывающая строка замещается строкой, которая состоит из первых posl символов вызывающей строки, за которыми следует строка str целиком, а после нее располагаются остальные символы вызывающей строки. Если posl больше длины строки, порождается исключение out_of_range. Если длина результата больше максимально допустимой длины строки, порождается исключение length__error.

Вторая форма функции вставляет в вызывающую строку часть строки str, начиная с позиции posl вызывающей строки. Вызывающая строка замещается строкой, которая состоит из первых posl символов вызывающей строки, за которыми следуют п элементов строки str, начиная с позиции pos2, а после них располагаются остальные символы вызывающей строки. Если п больше длины строки str, копируется весь остаток строки str. Если posl или pos2 больше длины соответствующей строки, порождается исключение out_of_range. Если длина результата

1 size_type представляет собой беззнаковый целый тип, достаточный для хранения размера самого большого объекта для данной модели.

290

Часть III. Стандартная библиотека

больше максимально допустимой длины строки, порождается исключение

length_error.

Третья форма функции вставляет в вызывающую строку п элементов строки s старого типа, начиная с позиции pos вызывающей строки.

Для удаления части строки служит функция erase:

erase(size_type pos = 0, size_type n = npos);

Она удаляет из вызывающей строки п элементов, начиная с позиции pos. Если pos не указано, элементы удаляются с начала строки. Если не указано п, удаляется весь остаток строки.

ВНИМАНИЕ

Величина npos является статическим членом класса string и представляет собой самое большое положительное число типа size_type (все единицы в битовом представлении).

Очистку всей строки можно выполнить с помощью функции clear:

void clearO;

Для замены части строки служит функция replace:

replace(size_type posl. size_type nl. const string& str); replace(size_type posl. size_type nl. const string& str, size_type pos2. size_type n2):

Здесь posl — позиция вызывающей строки, начиная с которой выполняется замена, nl — количество удаляемых элементов, pos2 — позиция строки str, начиная с которой она вставляется в вызывающую строку, п2 — количество вставляемых элементов строки str. Если posl или pos2 больше длины соответствующей строки, порождается исключение out_of_range. Если длина результата больше максимально допустимой длины строки, порождается исключение length_error.

Третья форма функции замены позволяет заменить nl символов вызывающей строки на п2 символов строки старого стиля s:

. replace(size_type posl. size_type nl, const char* s. size_type n2):

Для обмена содержимого двух строк служит функция swap:

swap(string& s): Для выделения части строки служит функция substr:

string substr(size_type pos = 0, size_type n = npos) const:

Эта функция возвращает подстроку вызываемой строки длиной п, начиная с позиции pos. Если pos больше длины строки, порождается исключение out_of_range. Если п больше длины строки, возвращается весь остаток строки.

Иногда требуется преобразовывать объекты типа string в строки старого стиля. Для этого предназначена функция c_str:

const char* c_str() const:

Она возвращает константный указатель на оканчивающуюся нуль-символом строку. Эту строку нельзя пытаться изменить. Указатель, который на нее ссылается, может стать некорректным после любой операции над строкой-источником.