Шаг 27.
Библиотека STL.
Обзор функций-членов класса string. Сравнение строк

    На этом шаге мы рассмотрим функцию, которая используется для сравнения строк.

    Чтобы сравнивать полное содержимое одного string-объекта с другим, обычно используются перегруженные операторы отношений. Но если нужно сравнивать часть одной строки с другой, необходимо использовать функцию-член compare().

   int compare (size_type start, size_type num,const string &strob) const;

    Функция compare() сравнивает с вызывающей строкой num символов строки, заданной параметром strob, начиная с индекса start. Если вызывающая строка меньше строки strob, функция compare() возвратит отрицательное значение. Если вызывающая строка больше строки strob, она возвратит положительное значение. Если строка strob равна вызывающей строке, фукнция compare() возвратит нуль.

    Приведем пример простой программы, иллюстрирующей использование этой функции.

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

#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[])
{
  string str1;
  string str2;

  cout << ToRus("Задайте первую строку\n");
  cin >> str1;
  cout << ToRus("Задайте вторую строку\n");
  cin >> str2;
  int pr=str1.compare(0,str2.length(),str2);
  if (pr<0) cout << ToRus("Строка str1 меньше str2");
  if (pr>0) cout << ToRus("Строка str1 больше str2");
  if (pr==0) cout << ToRus("Строка str1 равна str2");

  getch();
  return 0;
}
//---------------------------------------------------------------------------
Текст этого примера можно взять здесь.

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


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

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




Предыдущий шаг Содержание Следующий шаг