Поиск по сайту:

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


Введение

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

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

  1. Строка функция strcmp()
  2. Встроенная функция compare()
  3. Операторы отношения C++ (==, !=)

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

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

strcmp() Синтаксис

  • Входная строка должна быть массивом char строк в стиле C.
  • Функция strcmp() также сравнивает строки с учетом регистра.

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

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

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

strcmp() Пример 1

Запустите следующий код:

#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;
}

Это приведет к следующему результату:

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

strcmp(str_inp1, str_inp2) приводит к -9. Значения str_inp1 и str_inp2 различны.

strcmp() Пример 2

Запустите следующий код:

#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 (больше нуля), когда вторая строка больше в сравнении.

Пример 1: Использование сравнения()

Запустите следующий код:

#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.

Пример 2: Использование сравнения()

Запустите следующий код:

#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;
}

Укажите значения для \String 1 и \String 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;
}

Укажите значения для \String 1 и \String 2:

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

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

Заключение

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

Продолжите свое обучение с помощью дополнительных руководств по C++.