На этом шаге мы рассмотрим организацию поиска в строке.
В классе 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. Результат работы приложения
На следующем шаге мы рассмотрим сравнение строк.