Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

C++الدالة compare()

تعريفها

تقارن النص الذي قام باستدعائها مع النص الذي نمرره لها مكان الباراميتر str.
و ترجع رقم يمثل الفرق بينهما.

كل حرف في الحاسوب له رقم يسمى آسكي كود (ASCII) خاص به.
فمثلاً الآسكي كود للحرف A بشكله الكبير هو 65، أما الآسكي كود للحرف a بشكله الصغير فهو 97 إلخ..
بالطبع ليس عليك حفظ الآسكي كود للأحرف و لكن يكفي أن تعلم بأنه برمجياً يمكن استغلاله في عمليات المقارنة.



بناؤها

هناك شكلين من هذه الدالة. أي يمكن إستدعاءها بطريقتين مختلفتين.

C++ 98
C++ 11
C++ 14
int compare (const string& str) const
int compare (const string& str) const
int compare (const string& str) const noexcept
int compare (const string& str) const noexcept
int compare (const string& str) const noexcept
int compare (const string& str) const noexcept


باراميترات

مكان الباراميتر str نمرر النص الذي ستتم مقارنته مع النص الذي قام باستدعاء الدالة.



قيمة الإرجاع

  • ترجع 0 في حال كانا متساويين.
  • ترجع 1 في حال كانت قيمة الآسكي كود (ASCII) للنص الذي قام باستدعائها أكبر من النص الذي نمرره لها.
  • ترجع -1 في حال كانت قيمة الآسكي كود (ASCII) للنص الذي قام باستدعائها أكبر من النص الذي نمرره لها.


مثال

Main.cpp
#include <iostream>
using namespace std;
int main()
{
string s1 = "I like cats.";
string s2 = "I'm learning c++ from harmash.com";
string s3 = s1;
cout << s1.compare(s2) << endl; // s2 أقل من قيمة الآسكي كود في s1 هنا سيتم طباعة 1- لأن قيمة الآسكي كود في
cout << s2.compare(s1) << endl; // s1 أكبر من قيمة الآسكي كود في s2 هنا سيتم طباعة 1 لأن قيمة الآسكي كود في
cout << s1.compare(s3) << endl; // s3 يساوي قيمة الآسكي كود في s1 هنا سيتم طباعة 0 لأن قيمة الآسكي كود في
return 0;
}
#include <iostream> using namespace std; int main() { string s1 = "I like cats."; string s2 = "I'm learning c++ from harmash.com"; string s3 = s1; cout << s1.compare(s2) << endl; // s2 أقل من قيمة الآسكي كود في s1 هنا سيتم طباعة 1- لأن قيمة الآسكي كود في cout << s2.compare(s1) << endl; // s1 أكبر من قيمة الآسكي كود في s2 هنا سيتم طباعة 1 لأن قيمة الآسكي كود في cout << s1.compare(s3) << endl; // s3 يساوي قيمة الآسكي كود في s1 هنا سيتم طباعة 0 لأن قيمة الآسكي كود في return 0; }

سنحصل على النتيجة التالية عند التشغيل.

-1
1
0
-1 1 0