Сравнение строк в C++: три основных метода
Development | Комментировать запись
В этом руководстве мы изучим методы сравнения строк в 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: C++