Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование_С++_ч_4.doc
Скачиваний:
18
Добавлен:
22.11.2018
Размер:
243.2 Кб
Скачать

Поиск подстрок

Для поиска подстрок в классе string предусмотрено большое разнообразие функций. Рассмотрим некоторые их них:

size_type find (const string & str, size_type pos = 0) const;

ищет самое левое вхождение строки str в вызывающую строку, начиная с позиции pos, и возвращает позицию в строке или число npos (максимальное число типа size_type), если строка не найдена.

size_type find (const char с, size_type pos = 0) const;

ищет самое левое вхождение символа c в вызывающую строку, начиная с позиции pos, и возвращает позицию в строке или число npos, если строка не найдена.

size_type rfind (const string & str, size_type pos = npos) const;

ищет самое правое вхождение строки str в вызывающую строку до позиции pos и возвращает позицию в строке или число npos, если строка не найдена.

size_type rfind (const char c, size_type pos = 0) const;

ищет самое правое вхождение символа c в вызывающую строку, до позиции pos и возвращает позицию в строке или число npos, если строка не найдена.

Примеры

int i, j;

string s1 (“лесная королева”), s2 (“ле”);

i = s1.find (s2);

j = s1.rfind (s2);

cout << “Первое вхождение S2 в S1 ” << i<< endl;

cout << “Последнее вхождение S2 в S1 “ << j<< endl;

На экране получится:

Первое вхождение S2 в S1 0

Последнее вхождение S2 в S1 11

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

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

int compare (const string & str) const;

int compare (size_type pos1, size_type n1, const string & str) const;

int compare (size_type pos1, size_type n1, const string & str, size_type pos2, size_type n2) const;

Первая форма функции сравнивает две строки целиком и возвращает значение меньше нуля, если вызывающая строка “меньше” str, равное нулю, если строки одинаковы, и больше нуля, если вызывающая строка “больше”. Здесь “больше” или “меньше” означает сраинение букв по старшинству (порядку), т.е. “aa” и “aa” равны, “аб” и “ав” – вторая строка “больше” и т.п.

Вторая форма функции выполняет аналогичные действия, но сравнивает со строкой str n1 символов вызывающей строки, начиная с позиции pos1.

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

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

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

size_type size ( ) const; // количество элементов строки

size_type length ( ) const; // количество элементов строки

size_type max_size ( ) const; // максимальная длина строки

size_type capacity ( ) const; // объем памяти, занимаемый строкой

bool empty ( ) const; // истина, если строка пустая

Пример

string s("aaaaa");

cout << s.size( ) << endl; // выводим длину строки

Задание

Перепишите вашу программу – текстовый редактор с использованием класса string.

__________________________________________________________________

  1. Павловская Т.А. С / C++. Программирование на языке высокого уровня

/ Т.А. Павловская. СПб, 2002.

  1. Павловская Т.А. С / C++. Структурное программирование: практикум

/ Т.А.Павловская, Ю.А. Щупак. СПб, 2002.

  1. Павловская Т.А. / C++. Объектно-ориентированное программирование: практикум/ Т.А.Павловская, Ю.А.Щупак. СПб, 2002.