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

قم بتوفير القيم "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++. وشمل ذلك دالة strcmp() للسلاسل النصية، ودالة compare() المدمجة، ومعاملات العلاقات (==، !=).

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

قد يعجبك أيضاً