C++ دوال السلاسل النصية: strcpy()، strcat()، strlen()، strcmp()
⚡ ملخص ذكي
C++ تتيح دوال السلاسل النصية، مثل strcpy وstrcat وstrlen وstrcmp، للبرامج نسخ النصوص ودمجها وقياسها ومقارنتها. يشرح هذا المورد ماهية السلسلة النصية، وكيفية تعريف السلاسل النصية بنمط لغة C وstd::string، والوصول إلى قيمها، وتطبيق دوال السلاسل النصية الأساسية مع أمثلة توضيحية.

ما هي السلسلة؟
السلسلة عبارة عن سلسلة من الأحرف. أ C++ السلسلة النصية هي كائن من فئة std::string. يتم تخزين الأحرف كسلاسل من البايتات، مع إمكانية الوصول إلى بايت حرف واحد فقط.
C++ تُخصّص السلاسل النصية الذاكرة ديناميكيًا. ويمكن تخصيص المزيد من الذاكرة للسلسلة أثناء التشغيل عند الحاجة. ولعدم وجود تخصيص مسبق للذاكرة، لا يوجد هدر لها. ويمكننا إجراء عمليات متنوعة على السلاسل النصية، بما في ذلك المقارنة والدمج والتحويل، وغيرها.
إعلان السلاسل
C++ يدعم نوعين من إعلانات السلسلة:
- سلسلة أحرف على طراز C
- نوع فئة السلسلة
سلسلة الأحرف على النمط C
تم تقديم هذا النوع من تعريف السلاسل النصية في لغة البرمجة سي. C++ لا يزال يدعم ذلك. إنه ببساطة عبارة عن مصفوفة أحادية البعد من الأحرف تنتهي بحرف فارغ (\0). تتكون السلسلة المنتهية بحرف فارغ من الأحرف التي تشكل السلسلة متبوعة بحرف فارغ.
خذ بعين الاعتبار إعلان السلسلة الوارد أدناه:
char name[5] = {'J', 'o', 'h', 'n', '\0'};
يُنشئ التصريح أعلاه سلسلة نصية تُشكّل كلمة "John". تتكون الكلمة من 4 أحرف، بينما يبلغ حجم السلسلة النصية 5 أحرف. تسمح المساحة الإضافية بتخزين الحرف الفارغ.
باستخدام قاعدة تهيئة المصفوفة، يمكننا كتابة العبارة أعلاه على النحو التالي:
char name[] = "John";
لاحظ أنه ليس عليك وضع الحرف الفارغ في نهاية السلسلة النصية الثابتة. C++ سيضع المترجم تلقائيًا "\0" في نهاية السلسلة عند تهيئة المصفوفة.
الأمراض المنقولة جنسيا :: سلسلة
المعيار C++ توفر المكتبة فئة السلسلة النصية، التي تدعم عمليات متنوعة على السلاسل النصية. وهي مكتوبة بالصيغة std::string.
لاستخدام هذه الفئة، يجب علينا أولاً تضمينها في مساحة العمل الخاصة بنا باستخدام المعالج المسبق #include كما هو موضح أدناه:
#include <string>
بعد ذلك، يمكننا الإعلان عن السلسلة باستخدام الكلمة الأساسية. على سبيل المثال:
string name = "John";
سيقوم البيان أعلاه بإنشاء سلسلة تسمى name للاحتفاظ بالقيمة John.
الوصول إلى قيم السلسلة
In C++يمكننا الوصول إلى قيم السلسلة باستخدام اسم السلسلة. على سبيل المثال:
#include <iostream> using namespace std; int main() { char name[5] = { 'J', 'o', 'h', 'n', '\0' }; cout << "String value is: "; cout << name << endl; return 0; }
الإخراج:
فيما يلي لقطة شاشة للكود:
Code التفسير:
- بما في ذلك ملف رأس iostream في التعليمات البرمجية الخاصة بنا. سيسمح لنا بالقراءة من وحدة التحكم والكتابة إليها.
- تضمين مساحة الاسم std لاستخدام فئاتها ووظائفها دون استدعائها.
- استدعاء الدالة الرئيسية main() التي يجب إضافة منطق البرنامج داخلها. يشير الرمز { إلى بداية جسم الدالة الرئيسية main().
- الإعلان عن سلسلة من الأحرف وإعطائها اسم الاسم. ستقوم السلسلة بتخزين القيمة John. ستقوم المساحة الإضافية بتخزين الحرف الفارغ.
- طباعة بعض النص على وحدة التحكم.
- طباعة قيمة السلسلة المسماة name على وحدة التحكم.
- يجب أن تقوم الدالة main() بإرجاع قيمة إذا كان البرنامج يعمل بشكل جيد.
- نهاية نص الدالة main().
هنا مثال آخر باستخدام C++ فئة السلسلة القياسية:
#include <iostream> #include <string> using namespace std; int main() { string name = "Guru99"; cout << "The name is : " << name << endl; return 0; }
الإخراج:
فيما يلي لقطة شاشة للكود:
Code التفسير:
- بما في ذلك ملف رأس iostream في التعليمات البرمجية الخاصة بنا. سيسمح لنا بالقراءة من وحدة التحكم والكتابة إليها.
- بما في ذلك فئة السلسلة القياسية في التعليمات البرمجية لدينا.
- تضمين مساحة الاسم std لاستخدام فئاتها ووظائفها دون استدعائها.
- استدعاء الدالة الرئيسية main() التي يجب إضافة منطق البرنامج داخلها. يشير الرمز { إلى بداية جسم الدالة الرئيسية main().
- تعريف سلسلة نصية وتسميتها "name". ستخزن السلسلة النصية القيمة Guru99.
- طباعة قيمة اسم السلسلة بجانب بعض النص على وحدة التحكم.
- يجب أن تقوم الدالة main() بإرجاع قيمة إذا كان البرنامج يعمل بشكل جيد.
- نهاية نص الدالة main().
وظائف السلسلة في C++
سوف ترغب في كثير من الأحيان في التعامل مع السلاسل. C++ يوفر مجموعة واسعة من الوظائف التي يمكنك استخدامها لهذا الغرض. هذه الوظائف مُعرّفة في لذا، يجب تضمين ملف الرأس في الكود الخاص بنا لاستخدام الدوال. دعونا نناقش بعضها:
ستركبي ()
هذه هي وظيفة نسخ السلسلة. يقوم بنسخ سلسلة واحدة إلى سلسلة أخرى.
بناء الجملة:
strcpy(string1, string2);
المعاملان اللذان يتم إدخالهما في الدالة، وهما string1 و string2، عبارة عن سلاسل نصية. ستقوم الدالة بنسخ السلسلة النصية string2 إلى string1.
سترات ()
هذه هي وظيفة سلسلة متسلسلة. فهو يسلسل السلاسل.
بناء الجملة:
strcat(string1, string2);
المعاملان اللذان تستخدمهما الدالة، string1 و string2، هما السلسلتان المراد دمجهما. ستقوم الدالة المذكورة أعلاه بدمج السلسلة string2 في نهاية السلسلة string1.
سترلين ()
هذه هي وظيفة طول السلسلة. تقوم بإرجاع طول السلسلة التي تم تمريرها إليها كوسيطة.
بناء الجملة:
strlen(string1);
المعلمة string1 هي اسم السلسلة التي سيتم تحديد طولها. ستعيد الوظيفة المذكورة أعلاه طول السلسلة string1.
strcmp ()
هذه هي وظيفة مقارنة السلسلة. يتم استخدامه لمقارنة السلسلة.
بناء الجملة:
strcmp(string1, string2);
ستُرجع الدالة المذكورة أعلاه القيمة 0 إذا كانت السلسلتان string1 و string2 متشابهتين، وأقل من 0 إذا كانت string1 < string2، وأكبر من 0 إذا كانت string1 > string2.
على سبيل المثال:
يوضح المثال التالي كيفية استخدام وظائف السلسلة المذكورة أعلاه:
#include <iostream> #include <cstring> using namespace std; int main() { char name1[10] = "Guru99"; char name2[10] = "John"; char name3[10]; int len; strcpy(name3, name1); cout << "strcpy( name3, name1) : " << name3 << endl; strcat(name1, name2); cout << "strcat( name1, name2): " << name1 << endl; len = strlen(name1); cout << "strlen(name1) : " << len << endl; return 0; }
الإخراج:
فيما يلي لقطة شاشة للكود:
Code التفسير:
- بما في ذلك ملف رأس iostream في التعليمات البرمجية الخاصة بنا. سيسمح لنا بالقراءة من وحدة التحكم والكتابة إليها.
- بما في ذلك المعيار رأسية في الكود الخاص بنا.
- تضمين مساحة الاسم std لاستخدام فئاتها ووظائفها دون استدعائها.
- استدعاء الدالة الرئيسية main() التي يجب إضافة منطق البرنامج داخلها. يشير الرمز { إلى بداية جسم الدالة الرئيسية main().
- تعريف سلسلة نصية مكونة من 10 أحرف وتسميتها name1. ستخزن هذه السلسلة القيمة Guru99.
- الإعلان عن سلسلة مكونة من 10 أحرف وإعطائها الاسم name2. ستقوم السلسلة بتخزين القيمة John.
- الإعلان عن سلسلة مكونة من 10 أحرف وإعطائها الاسم name3.
- اعلان ا متغير صحيح اسمه لين.
- نسخ اسم السلسلة 1 إلى اسم السلسلة 3.
- طباعة قيمة السلسلة النصية name3 مع بعض النصوص على وحدة التحكم. يجب أن تطبع Guru99.
- بدمج السلسلة name2 مع نهاية السلسلة name1، تصبح قيمة name1 الآن Guru99جون.
- طباعة قيمة السلسلة النصية name1 مع بعض النصوص على وحدة التحكم. يجب أن تطبع Guru99جون.
- تحديد طول السلسلة المسماة name1 وتعيين قيمة الطول للمتغير len.
- طباعة قيمة المتغير len بجانب نص آخر على وحدة التحكم.
- يجب أن تقوم الدالة main() بإرجاع قيمة إذا كان البرنامج يعمل بشكل جيد.
- نهاية نص الدالة main().




