ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 7) онлайн

Поиск объектов класса string

Класс string включает в себя различные методы для поиска строк и фрагментов строк в объектах класса string. В программе SSTRFIND показаны некоторые из них.

// sstrfind.cpp

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

#include <iostream>

#include <string>

using namespace std;

///////////////////////////////////////////////////////////

int main ( )

{

  string s1 = "В лесу родилась елочка, в лесу она росла.";

  int n;

 

  n = s1.find ( "елочка" );

  cout << "Елочка найдена: " << n << endl;

 

  n = s1.find_first_of ( "умка" );

  cout << "Первый из умка: " << n << endl;

 

  n = s1.find_first_not_of ( "абвгдАБВГД" );

  cout << "Первый не из : " << n << endl;

 

  return 0;

}

Метод find() предназначен для поиска строки, используемой в качестве аргу- мента, в строке, для которой был вызван метод. Здесь мы ищем слово «елочка» в строке s1, которая содержит отрывок известной песенки. Оно найдено на позиции 16. Как в строковом типе, позиция самого левого символа нумерует- ся как 0.

Метод find_first_of() предназначен для поиска любого символа из группы и возвращает позицию первого найденного. Здесь ищем любой символ из груп- пы 'у', 'м', 'к', 'а'. Первым из них будет найден символ 'у' в слове 'лесу' на пози- ции 5.

Похожий метод find_first_not_of() ищет первый символ в строке, который не входит в определенную группу символов. Здесь группа состоит из нескольких букв, прописных и строчных, поэтому функция находит первый символ пробе-

ла, который является вторым символом в строке. Вывод программы SSTRFIND будет таким:

Елочка найдена: 16 Первый из умка: 5 Первый не из абвгдАБВГД: 1

У многих из этих методов существуют варианты, которые мы не будем де- монстрировать здесь, такие, как функция rfind(), переворачивающая строку, find_ last_of(), ищущая последний символ, совпадающий с группой заданных симво- лов и find_last_not_of(). Все эти функции возвращают -1, если цель не найдена.

 

30