Введение
В этой статье вы узнаете, как сравнивать строки в 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() и операторы сравнения (==, !=).









