مقارنة النصوص
جزء من قسم Fundamentals في رحلة C++ على Coddy — الدرس 22 من 74.
في لغة ++C، يمكن مقارنة السلاسل النصية بطرق متعددة. بما أن std::string عبارة عن فئة (class)، فإنها تمتلك معاملات محملة بشكل زائد (overloaded operators) تجعل مقارنة السلاسل النصية بديهية ومباشرة.
الطريقة الأكثر شيوعاً لمقارنة السلاسل النصية هي استخدام معاملات المقارنة (==, !=, <, >, <=, >=):
string str1 = "hello";
string str2 = "hello";
string str3 = "Hello";
bool result1 = (str1 == str2); // true
bool result2 = (str1 == str3); // false (حساس لحالة الأحرف)
bool result3 = (str1 != str3); // trueيمكنك أيضاً استخدام الطريقة compare()، التي تُرجع 0 إذا كانت السلاسل النصية متساوية، وعدداً صحيحاً سالباً إذا كانت السلسلة الأولى أصغر معجمياً، وعدداً صحيحاً موجباً إذا كانت أكبر. لاحظ أن القيمة الدقيقة تعتمد على التنفيذ (implementation-defined) — فهي ليست بالضرورة -1 أو 1:
string str1 = "a";
string str2 = "b";
string str3 = "c";
cout << str2.compare(str1) << endl;
// موجب (b تأتي بعد a)
cout << str2.compare(str3) << endl;
// سالب (b تأتي قبل c)
cout << str2.compare(str2) << endl;
// 0 (سلاسل متساوية)ورقة مرجعية
في لغة C++، يمكنك مقارنة السلاسل النصية باستخدام معاملات المقارنة أو الأسلوب compare().
استخدام معاملات المقارنة:
string str1 = "hello";
string str2 = "hello";
string str3 = "Hello";
bool result1 = (str1 == str2); // صحيح
bool result2 = (str1 == str3); // خطأ (حساس لحالة الأحرف)
bool result3 = (str1 != str3); // صحيحاستخدام الأسلوب compare():
تُرجع القيمة 0 إذا كانت السلاسل متساوية، و <0 إذا كانت السلسلة الأولى أصغر معجمياً، و >0 إذا كانت أكبر:
string str1 = "a";
string str2 = "b";
string str3 = "c";
cout << str2.compare(str1) << endl; // قيمة موجبة (b تأتي بعد a)
cout << str2.compare(str3) << endl; // قيمة سالبة (b تأتي قبل c)
cout << str2.compare(str2) << endl; // 0 (سلاسل متساوية)جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)الزيادة والنقصانالزيادة والنقصان اللاحقةاختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص