Сравнение строк в C++: три основных метода

В этом руководстве мы изучим методы сравнения строк в C++. Давайте предположим, что нам необходимо ввести свое имя и пароль для входа на определенный веб-сайт. Для подобных случаев на серверной части мы должны собрать и написать скрипт для проверки и сравнения входной строки со строкой, хранящейся в базе данных.

Итак, на таком простом примере мы рассмотрим несколько способов сравнения строк в языке C++.

Методы сравнения строк в C++

Строки в C++ можно сравнивать с помощью любого из следующих методов:

  • Строковая функция strcmp()
  • Встроенная функция compare()
  • Реляционные операторы С++ ( ‘==’, ‘!=’)

1: Строковая функция strcmp()

C++ имеет встроенные функции для управления и обработки данных строкового типа. Чтобы сравнить две строки, мы можем использовать функцию strcmp().

strcmp() — это библиотечная функция C, используемая для сравнения двух строк лексикографическим способом.

Синтаксис функции выглядит так:

int strcmp ( const char * str1, const char * str2 );

Функция возвращает 0, если строки одинаковы.

Входная строка должна быть массивом символов в стиле C.

При сравнении строк функция strcmp() учитывает регистр.

Пример 1:

#include<iostream>
using namespace std;
#include<string.h>
int main() {
   const char *str_inp1="JournalDEV";
   const char *str_inp2="JournalDEv";

cout<<"String 1:"<<str_inp1<<endl;
cout<<"String 2:"<<str_inp2<<endl;

                if (strcmp(str_inp1, str_inp2) == 0)
                               cout << "\nBoth the input strings are equal." << endl;
                else
                               cout << "The input strings are not equal.";

}

В результате вы получите:

String 1:JournalDEV
String 2:JournalDEv
The input strings are not equal.

Пример 2:

#include<iostream>
using namespace std;
#include<string.h>
int main() {
   const char *str_inp1="Python";
   const char *str_inp2="Python";

cout<<"String 1:"<<str_inp1<<endl;
cout<<"String 2:"<<str_inp2<<endl;

                if (strcmp(str_inp1, str_inp2) == 0)
                               cout << "\nBoth the input strings are equal." << endl;
                else
                               cout << "The input strings are not equal.";

}

Результат будет выглядеть так:

String 1:Python
String 2:Python

Both the input strings are equal.

2: Функция compare()

C++ имеет встроенную функцию compare(), которая нужна для быстрого сравнения двух строк.

Функция сравнивает две строки и возвращает следующие значения в зависимости от результата сравнения:

  • 0, если строки одинаковы.
  • <0, если значение символа первой строки меньше по сравнению со второй строкой.
  • >0, если первая строка больше по сравнению со второй.

Синтаксис функции:

int compare (const string& string-name) const;

А теперь давайте рассмотрим пару примеров. Пример 1:

#include<iostream>
using namespace std;

int main() {
   string str_inp1("Python");
   string str_inp2("Python");

cout<<"String 1:"<<str_inp1<<endl;
cout<<"String 2:"<<str_inp2<<endl;
int res = str_inp1.compare(str_inp2);

                if (res == 0)
                               cout << "\nBoth the input strings are equal." << endl;
                else if(res < 0)
                               cout << "String 1 is smaller as compared to String 2\n.";
                               else
                               cout<<"String 1 is greater as compared to String 2\n.";
}

В приведенном выше примере мы сравнили строку 1 со строкой 2. Как видите, обе строки лексикографически одинаковы, потому функция возвращает 0.

String 1:Python
String 2:Python

Both the input strings are equal.

Пример 2:

#include<iostream>
using namespace std;

int main() {
   string str_inp1("Python");
   string str_inp2("JournalDEV");


cout<<"String 1:"<<str_inp1<<endl;


                if (str_inp1.compare("Python") == 0)
                               cout << "Strings are equal." << endl;
                else
                               cout<<"Strings are not Equal\n.";


cout<<"\nString 2:"<<str_inp2<<endl;  
                if (str_inp2.compare("JournalDEv") == 0)
                               cout << "Strings are equal." << endl;
                else
                               cout<<"Strings are not Equal.\n";           

}

В приведенном выше фрагменте кода мы снова сравнили строку с другой входной строкой с помощью функции compare().

String 1:Python
Strings are equal.

String 2:JournalDEV
Strings are not Equal.

3: Реляционные операторы в C++

Реляционные операторы C++, такие как «==» и «!=», можно легко использовать для сравнения строк.

Синтаксис их выглядит следующим образом:

string1 == string 2
или
string1 != string2

Давайте взглянем на первый пример с использованием оператора ==:

#include<iostream>
using namespace std;

int main() {
   string str_inp1;
   string str_inp2;

   cout<<"Enter the String 1:\n";
   cin>>str_inp1;
   cout<<"Enter the String 2:\n";
   cin>>str_inp2;


    if (str_inp1 == str_inp2)
        cout <<"Strings are equal"<<endl;
    else
        cout <<"Strings are not equal"<< endl;


}

Он вернет такой результат:

Enter the String 1:
Python
Enter the String 2:
PythoN
Strings are not equal

Во втором примере мы попробуем использовать оператор !=:

#include<iostream>
using namespace std;

int main() {
   string str_inp1;
   string str_inp2;

   cout<<"Enter the String 1:\n";
   cin>>str_inp1;
   cout<<"Enter the String 2:\n";
   cin>>str_inp2;
  
    if (str_inp1 != str_inp2)
        cout <<"Strings are not equal"<<endl;
    else
        cout <<"Strings are equal"<< endl;

}

В этом случае будет следующий результат:

Enter the String 1:
Python
Enter the String 2:
Python
Strings are equal

Заключение

В этой статье мы рассмотрели различные способы сравнения строк в языке C++.

Больше информации о C++ вы найдете в официальной документации.

Tags:

Добавить комментарий