3 способа сравнения строк в C++
Введение
В этой статье вы изучите методы сравнения строк в C++.
Строки в C++ можно сравнивать с помощью одного из следующих методов:
Строка
функция strcmp()
- Встроенная функция
compare()
- Операторы отношения 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;
}
Это приведет к следующему результату:
OutputString 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;
}
Это приведет к следующему результату:
OutputString 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()
:
OutputString 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
:
OutputString 1: String Match
Strings are equal.
Затем str_inp0
сравнивается с str_inp2
:
OutputString 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++.