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

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

293

Пример применения функций поиска:

#include <string> #include <iostream> using namespace std; int main (){

string 51("лесная королева"). 52("ле");

cout « "sl= " « si « end!;

cout « "s2= " « s2 « endl;

int i = sl.find(s2);

int j = sl.rfind(s2);

cout « "первое s2 в si " « i « endl;

cout « "последнее s2 в si " « j « endl;

cout « "первое 'о' в si " « sl.find('o') « endl;

cout « "последнее 'о' в si " « sl.rfindCo*) « endl;

cout « "первое в si " « sl.find_first_of("a6Brfle") « endl;

cout « "последнее в si " « sl.findJast_of("a6Brfle") « endl; } Результат работы программы:

sl= лесная королева s2= ле

первое s2 в si О последнее s2 в si 11 первое 'о' в si 8 последнее 'о' в si 10 первое в si 1 последнее в si 14

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

Для сравнения строк целиком применяются перегруженные операции отношения, а если требуется сравнивать части строк, используется функция compare:

int compare(const string& str) const;

int compare(size__type posl, size_type nl, const string& str) const;

int compare(size_type posl. size_type nl,

const string& str, size_type pos2. size_type n2) const;

Первая форма функции сравнивает две строки целиком и возвращает значение, меньшее 0, если вызывающая строка лексикографически меньше str, равное нулю, если строки одинаковы, и большее нуля — если вызывающая строка больше. Эта форма является аналогом функции сравнения строк strstr библиотеки С.

Вт&р&я форма фуляры 1*ьшп1шяет диалогичные лействия, но сравнивает со строкой str nl символов вызывающей строки, начиная с posl.

Третья форма функции сравнивает nl символов вызывающей строки, начиная с posl, с подстрокой строки str длиной п2 символов, начиная с pos2.

294

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

Аналогичные формы функций существуют и для сравнения строк типа string со строками старого стиля.

Пример использования функции сравнения строк:

#include <string>

#include <iostream>

using namespace std:

int main (){

string $1("лесная королева"), s2("ne"), s3("корова");

cout « "sl= " « si « endl;

cout « "s2= " « s2 « endl;

cout « "s3= " « s3 « endl;

if (s2.compare(s3) > 0) cout « "s2 > s3 " « endl;

if (sl.compare(7, 4, s3) < 0)

cout « "sl[7-10] < s3 " « endl; if (si.compared. 4, s3. 0.4 ) == 0)

cout « Msl[7-10] == s3[0-3] " « endl; } Результат работы программы:

sl= лесная королева s2= ле s3= корова s2 > s3 sl[7-10] < s3 sl[7-10] == s3[0-3]

Получение характеристик строк

В классе string определено несколько функций-членов, позволяющих получить длину строки и объем памяти, занимаемый объектом:

size_type sizeO const; size_type length О const; size_type max_size() const; size_type capacity О const; bool emptyО const;

// Количество элементов строки

// Количество элементов строки

// Максимальная длина строки

// Объем памяти, занимаемый строкой

// Истина, если строка пустая