C++ دالة السلسلة: strcpy()، strcat()، strlen()، strcmp() مثال
ما هي السلسلة؟
السلسلة عبارة عن سلسلة من الأحرف. أ C++ السلسلة هي كائن من فئة std::string. الأحرف عبارة عن تسلسلات مخزنة من البايتات مع السماح بالوصول إلى بايت حرف واحد.
C++ تقوم السلاسل بتخصيص الذاكرة بشكل ديناميكي. ويمكن تخصيص المزيد من الذاكرة للسلسلة أثناء وقت التشغيل إذا لزم الأمر. ونظرًا لعدم وجود تخصيص مسبق للذاكرة، فلا يوجد إهدار للذاكرة. ويمكننا إجراء عمليات مختلفة على السلاسل، بما في ذلك المقارنات والتسلسل والتحويل وما إلى ذلك.
إعلان السلاسل
C++ يدعم نوعين من إعلانات السلسلة:
- سلسلة أحرف على طراز C
- نوع فئة السلسلة
سلسلة الأحرف على النمط C
تم تقديم هذا النوع من إعلان السلسلة في لغة البرمجة سي. C++ تواصل دعمها. إنها ببساطة مجموعة من الأحرف أحادية البعد منتهية بحرف فارغ (\0). تحتوي السلسلة المنتهية بقيمة خالية على أحرف تشكل السلسلة ثم تليها قيمة فارغة.
خذ بعين الاعتبار إعلان السلسلة الوارد أدناه:
char name[5] = {'J', 'o', 'h', 'n', '\0'};
ينشئ الإعلان أعلاه سلسلة تشكل كلمة جون. تحتوي الكلمة على 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; }
الإخراج:
فيما يلي لقطة شاشة للكود:
شرح الكود:
- بما في ذلك ملف رأس iostream في التعليمات البرمجية الخاصة بنا. سيسمح لنا بالقراءة من وحدة التحكم والكتابة إليها.
- تضمين مساحة الاسم std لاستخدام فئاتها ووظائفها دون استدعائها.
- استدعاء الوظيفة الرئيسية () التي يجب إضافة منطق البرنامج بداخلها. تشير العلامة { إلى بداية نص الدالة 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; }
الإخراج:
فيما يلي لقطة شاشة للكود:
شرح الكود:
- بما في ذلك ملف رأس iostream في التعليمات البرمجية الخاصة بنا. سيسمح لنا بالقراءة من وحدة التحكم والكتابة إليها.
- بما في ذلك فئة السلسلة القياسية في التعليمات البرمجية لدينا.
- تضمين مساحة الاسم std لاستخدام فئاتها ووظائفها دون استدعائها.
- استدعاء الوظيفة الرئيسية () التي يجب إضافة منطق البرنامج بداخلها. تشير العلامة { إلى بداية نص الدالة main().
- الإعلان عن سلسلة وإعطائها اسم الاسم. ستقوم السلسلة بتخزين القيمة Guru99.
- طباعة قيمة اسم السلسلة بجانب بعض النص على وحدة التحكم.
- يجب أن تقوم الدالة main() بإرجاع قيمة إذا كان البرنامج يعمل بشكل جيد.
- نهاية نص الدالة main().
وظائف السلسلة في C++
سوف ترغب في كثير من الأحيان في التعامل مع السلاسل. C++ يوفر مجموعة واسعة من الوظائف التي يمكنك استخدامها لهذا الغرض. يتم تعريف هذه الوظائف في فئة CString، وبالتالي، يتعين علينا تضمينها في التعليمات البرمجية الخاصة بنا من أجل استخدام الوظائف. دعونا نناقش بعض:
ستركبي ()
هذه هي وظيفة نسخ السلسلة. يقوم بنسخ سلسلة واحدة إلى سلسلة أخرى.
بناء الجملة:
strcpy(string1, string2);
المعلمتان الخاصتان بالوظيفة، string1 وstring2، عبارة عن سلاسل نصية. ستقوم الوظيفة بنسخ السلسلة string2 إلى string1.
سترات ()
هذه هي وظيفة سلسلة متسلسلة. فهو يسلسل السلاسل.
بناء الجملة:
strcat(string1, string2);
المعلمتان للدالة، string1 وstring2 هما السلاسل المراد ربطها. ستقوم الوظيفة المذكورة أعلاه بربط السلسلة string2 إلى نهاية السلسلة string1.
سترلين ()
هذه هي وظيفة طول السلسلة. تقوم بإرجاع طول السلسلة التي تم تمريرها إليها كوسيطة.
بناء الجملة:
strnlen(string1)
المعلمة string1 هي اسم السلسلة التي سيتم تحديد طولها. ستعيد الوظيفة المذكورة أعلاه طول السلسلة string1.
strcmp ()
هذه هي وظيفة مقارنة السلسلة. يتم استخدامه لمقارنة السلسلة.
بناء الجملة:
strcmp(string1, string2);
ستُرجع الدالة أعلاه 0 إذا كانت السلاسل string1 وstring2 متشابهة، وأقل من 0 إذا كانت السلسلة 1 سلسلة2.
على سبيل المثال:
يوضح المثال التالي كيفية استخدام وظائف السلسلة المذكورة أعلاه:
#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; }
الإخراج:
فيما يلي لقطة شاشة للكود:
شرح الكود:
- بما في ذلك ملف رأس iostream في التعليمات البرمجية الخاصة بنا. سيسمح لنا بالقراءة من وحدة التحكم والكتابة إليها.
- بما في ذلك فئة CString القياسية في التعليمات البرمجية الخاصة بنا.
- تضمين مساحة الاسم std لاستخدام فئاتها ووظائفها دون استدعائها.
- استدعاء الوظيفة الرئيسية () التي يجب إضافة منطق البرنامج بداخلها. تشير العلامة { إلى بداية نص الدالة main().
- الإعلان عن سلسلة مكونة من 10 أحرف وإعطائها الاسم name1. ستقوم السلسلة بتخزين القيمة Guru99.
- الإعلان عن سلسلة مكونة من 10 أحرف وإعطائها الاسم name2. ستقوم السلسلة بتخزين القيمة John.
- الإعلان عن سلسلة مكونة من 10 أحرف وإعطائها الاسم name3.
- اعلان ا متغير صحيح اسمه لين.
- نسخ اسم السلسلة 1 إلى اسم السلسلة 3.
- طباعة قيمة السلسلة name1 بجانب بعض النصوص الموجودة على وحدة التحكم. يجب أن تطبع Guru99.
- تسلسل السلاسل name2 إلى نهاية السلسلة name1. أصبحت قيمة name1 الآن Guru99John.
- طباعة قيمة السلسلة name1 بجانب بعض النصوص الموجودة على وحدة التحكم. يجب أن تطبع Guru99John
- تحديد طول السلسلة المسماة name1 وتعيين قيمة الطول للمتغير len.
- طباعة قيمة متغير len بجانب بعض النصوص الأخرى على وحدة التحكم.
- يجب أن تقوم الدالة main() بإرجاع قيمة إذا كان البرنامج يعمل بشكل جيد.
- نهاية نص الدالة main().
الملخص
- السلسلة عبارة عن سلسلة من الأحرف.
- تنتمي السلاسل إلى فئة السلسلة القياسية في C++.
- يمكننا الإعلان عن السلاسل باستخدام سلسلة الأحرف ذات النمط C أو فئة السلسلة القياسية.
- تقوم الدالة strcpy() بنسخ سلسلة إلى أخرى.
- تقوم الدالة strcat() بربط سلسلتين.
- تقوم الدالة strlen() بإرجاع طول السلسلة.
- تقوم الدالة strcmp() بمقارنة سلسلتين.