3 روش برای مقایسه STringها در C++

مقدمه

در این مقاله روش های مقایسه رشته ها در C++ را خواهید آموخت.

1. استفاده از تابع strcmp() در C++

C++ String دارای توابع داخلی برای دستکاری داده ها از نوع 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() String، تابع compare() داخلی و عملگرهای رابطه ای (==، !=) بود.

[تعداد: 1   میانگین: 5/5]
دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

شاید دوست داشته باشید