Обзор функций-членов класса string. Поиск в строке

   
На этом шаге мы рассмотрим организацию поиска в строке.

   
В классе string предусмотрено несколько функций-членов, которые осуществляют поиск. Это, например, такие
функции, как find() и rfind(). Рассмотрим прототипы самых употребительных версий этих функций.

   size_type find (const string &strob,size_type start=0) const;
   size_type rfind (const string &strob,size_type start = npos) const;

   
Функция find(), начиная с позиции start, просматривает вызывающую строку на предмет поиска
первого вхождения строки, заданной параметром strob. Если поиск успешен, функция find() возвращает
индекс, по которому в вызывающей строке было обнаружено совпадение. Если совпадения не обнаружено,
возвращается значение npos. Функция rfind() выполняет то же действие, но с конца. Начиная с
позиции start, она просматривает вызывающую строку в обратном направлении на предмет поиска первого
вхождения строки, заданной параметром strob. Если поиск прошел удачно, функция rfind() возвращает
индекс, по которому в вызывающей строке было обнаружено совпадение. Если совпадения не обнаружено,
возвращается значение npos.

   
Пример использования функции find().

//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream>
#include <string>
#include <conio.h> //необходимо для getch()
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
using namespace std;

std::string ToRus(const std::string &in)
{
  char *buff = new char [in.length()+1];
  CharToOem(in.c_str(),buff);
  std::string out(buff);
  delete [] buff;
  return out;
}


int main(int argc, char* argv[])
{
  int i;
  string s1 = "Класс string облегчает обработку строк.";
  string s2;

  cout << ToRus("Исходная строка: ");
  cout << ToRus(s1) << endl;
  
  i = s1.find("string");
  if (i != string::npos)
  {
  	cout << ToRus("Совпадение обнаружено в позиции ") << i << endl;
  	cout << ToRus("Остаток строки таков: ");
  	s2.assign(s1, i, s1.size());
  	cout << ToRus(s2);
  }

  getch();
  return 0;
}
//---------------------------------------------------------------------------

Текст этого примера можно взять здесь.

   
Результаты выполнения этой программы представлены на рисунке 1.


Рис.1. Результат работы приложения

   
На следующем шаге мы рассмотрим сравнение строк.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий