3 способа сравнения строк в C++

0 Акции
0
0
0
0

Введение

В этой статье вы узнаете, как сравнивать строки в C++.

1. Использование функции strcmp() в C++

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

  • Входная строка должна представлять собой массив символов в стиле C.
  • strcmp() также сравнивает строки с учетом регистра.
int strcmp(const char *str1, const char *str2);

Эта функция возвращает следующие значения в зависимости от совпадающих элементов:

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

Выполните следующий код:

#include <iostream>
#include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Unmatch";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}

Это дает следующий результат:

OutputString 1: String Match
String 2: String Unmatch
The input strings are not equal.

strcmp(str_inp1, str_inp2) даёт результат -9. Значения str_inp1 и str_inp2 различны.

Выполните следующий код:

#include <iostream>
#include <string.h>
int main()
{
const char *str_inp1 = "String Match";
const char *str_inp2 = "String Match";
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (strcmp(str_inp1, str_inp2) == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else
std::cout << "\nThe input strings are not equal." << std::endl;
}

Это дает следующий результат:

Output
String 1: String Match
String 2: String Match
Both the input strings are equal.

strcmp(str_inp1, str_inp2) возвращает 0. Значения str_inp1 и str_inp2 одинаковы.

2. Использование функции compare() в C++

В C++ имеется встроенная функция compare() для сравнения двух строк.

Функция compare() сравнивает две строки:

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

Эта функция возвращает следующие значения в зависимости от совпадающих элементов:

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

Выполните следующий код:

#include <iostream>
int main()
{
std::string str_inp1("String Match");
std::string str_inp2("String Match");
std::cout << "String 1: " << str_inp1 << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
int res = str_inp1.compare(str_inp2);
if (res == 0)
std::cout << "\nBoth the input strings are equal." << std::endl;
else if (res < 0)
std::cout << "\nString 1 is smaller as compared to String 2." << std::endl;
else
std::cout << "\nString 1 is greater as compared to String 2." << std::endl;
}

В этом примере str_inp1 и str_inp2 сравниваются с помощью compare():

Output
String 1: String Match
String 2: String Match
Both the input strings are equal.

Обе строки лексически идентичны, поэтому функция возвращает 0.

Выполните следующий код:

#include <iostream>
int main()
{
std::string str_inp0("String Match");
std::string str_inp1("String Match");
std::string str_inp2("String Unmatch");
std::cout << "String 1: " << str_inp1 << std::endl;
if (str_inp1.compare(str_inp0) == 0)
std::cout << "\nStrings are equal." << std::endl;
else
std::cout << "\nStrings are not equal." << std::endl;
std::cout << "String 2: " << str_inp2 << std::endl;
if (str_inp2.compare(str_inp0) == 0)
std::cout << "\nStrings are equal." << std::endl;
else
std::cout << "\nStrings are not equal." << std::endl;
}

В этом примере str_inp0 сравнивается с str_inp1:

Output
String 1: String Match
Strings are equal.

Затем str_inp0 сравнивается с str_inp2:

Output
String 2: String Unmatch
Strings are not equal.

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

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

Операторы сравнения C++, такие как == (равно) и != (не равно), могут быть полезны при сравнении строк.

Проверьте, равны ли два значения:

string1 == string2

Проверьте, равны ли два значения:

string1 != string2
Пример 1: Использование оператора C++ ==

Выполните следующий код:

#include <iostream>
int main()
{
std::string str_inp1;
std::string str_inp2;
std::cout << "Enter the String 1:\n";
std::cin >> str_inp1;
std::cout << "Enter the String 2:\n";
std::cin >> str_inp2;
if (str_inp1 == str_inp2)
std::cout << "Strings are equal" << std::endl;
else
std::cout << "Strings are not equal" << std::endl;
}

Укажите значения «Строка 1» и «Строка 2»:

Enter the String 1:
DigitalOcean
Enter the String 2:
digitalocean
Strings are not equal

Код сравнивает две строки с помощью ==.

Пример 2: Использование оператора C++ !=

Выполните следующий код:

#include <iostream>
int main()
{
std::string str_inp1;
std::string str_inp2;
std::cout << "Enter the String 1:\n";
std::cin >> str_inp1;
std::cout << "Enter the String 2:\n";
std::cin >> str_inp2;
if (str_inp1 != str_inp2)
std::cout << "Strings are not equal" << std::endl;
else
std::cout << "Strings are equal" << std::endl;
}

Укажите значения «Строка 1» и «Строка 2»:

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

Код сравнивает две строки с помощью !=.

Результат

В этой статье вы познакомились с методами сравнения строк в C++. В их число входят функция String strcmp(), встроенная функция compare() и операторы сравнения (==, !=).

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может понравиться