المصطلح يعني تسلسل مرتب من الأحرف. يمكن تمثيل سلسلة من الأحرف باستخدام كائن من فئة في C ++. تسمى الفئة التي تقدم تعريفًا للقيام بذلك فئة String. تخزن فئة String الأحرف كتسلسل من البايت مع وظيفة السماح بالوصول إلى الحرف أحادي البايت. في لغة ++ C ، تكون المحددات المرفقة عبارة عن علامات اقتباس مزدوجة. في مقالة 'سلاسل في C ++' ، سأناقش الموضوعات التالية:
- فئة السلسلة واختلاف صفيف الأحرف
- قم بتعريف وتهيئة سلاسل في C ++
- العمليات على السلاسل في C ++
- حجم السلسلة
- تسلسل السلسلة
- إلحاق السلاسل
- البحث عن السلاسل
فئة السلسلة واختلاف صفيف الأحرف
فئة السلسلة | صفيف الأحرف |
فئة String هي فئة تحدد الكائنات التي يمكن تمثيلها في شكل سلسلة من الأحرف | مجموعة الأحرف هي ببساطة مجموعة من الأحرف. |
في حالة السلاسل ، يتم تخصيص الذاكرة ديناميكيًا وبالتالي يمكن تخصيص المزيد من الذاكرة في وقت التشغيل عند الطلب | يجب تخصيص حجم صفيف الأحرف بشكل ثابت وبالتالي لا يمكن تخصيص المزيد من الذاكرة في وقت التشغيل إذا لزم الأمر |
تحدد فئة String عددًا من الوظائف التي تسمح بعمليات متعددة على السلاسل. | لا تقدم مجموعة الأحرف العديد من الوظائف المضمنة لمعالجة السلاسل |
تكون السلاسل أبطأ عند مقارنتها بالتنفيذ من مصفوفة الأحرف. | تنفيذ مجموعة الأحرف هو أسرع. |
قم بتعريف وتهيئة سلاسل في C ++
إن تهيئة السلسلة في C ++ بسيطة جدًا! يمكننا استخدام أي من الطرق التالية.
باستخدام سلسلة مساحة الاسم std std_string
أو
الأمراض المنقولة جنسيا :: سلسلة std_string
# تضمين استخدام مساحة الاسم std int main () {char ch [12] = {'H'، 'e'، 'l'، 'l'، 'o'، ''، 'b'، 'y'، ' ، 'c'، 'h'، ''} string = 'Hello by st' std :: string std_st = 'Hello by std_st' cout<< ch << endl cout << st << endl cout << std_st << endl return 0 }
انتاج:
Hello by ch Hello by st Hello by std_st
في هذا المثال ، أظهرنا كلاً من مصفوفة الأحرف (ch) والسلسلة clطريقتا التهيئة (st و std_st). أولاً ، استخدمنا طريقة مصفوفة المحارف بتعريف مصفوفة المحارف ch [12] التي تحتوي على 12 عنصرًا وتنتهي بحرف فارغ. في الجزء الثاني ، استخدمنا طريقة فئة السلسلة.
العمليات على السلاسل في C ++
ميزة استخدام فئة السلسلة هي أن هناك العديد من الوظائف المضمنة في C ++ لمعالجتها. هذا يجعل البرمجة سهلة وفعالة. دعونا نتناول بعض وظائف معالجة الأوتار المهمة ونفهمها من خلال النظر في بعض الأمثلة.
حجم السلسلة: يمكن استخدام كلا الأسلوبين size () و length () لإرجاع حجم الكائن.
كلفة<< st.length() <انتاج:
11 11تسلسل السلسلة: يمكننا ربط سلسلتين أو أكثر ببساطة باستخدام عامل + بينهما
ما هو الإطار في السيلينيومسلسلة new_string = st + 'و' + std_st cout<< new_string <انتاج:
مرحبًا من st ومرحبًا بواسطة std_stإلحاق سلاسل: يمكن استخدام وظيفة عضو فئة .append (سلسلة) لسلسلة وإلحاق سلسلة في موقع حرف معين في السلسلة. إذا قام المبرمج بوضع str.append (str1، p، n) ، فهذا يعني أن عدد الأحرف n من الموضع p في السلسلة str1 سيتم إلحاقه بنهاية السلسلة str.
string str = 'أنا أستمتع بالتعلم' string str1 = 'Python أو C ++ أو C' str.append (str1، 8، 3) cout<< str << endlانتاج:
أنا أستمتع بتعلم C ++سلاسل البحث: يمكننا استخدام دالة العضو find () لإيجاد التواجد الأول لسلسلة داخل أخرى. سيبحث find () عن إبرة خيط داخل كومة قش خيطية بدءًا من الموضع ويعيد موضع التكرار الأول للإبرة. تعمل الدالة rfind () بشكل مشابه ، إلا أنها تُرجع التكرار الأخير للسلسلة التي تم تمريرها.
سلسلة قش = 'أهلاً بالعالم!' إبرة السلسلة = 'o' cout<< haystack.find(needle)<انتاج:
4 4 7 4294967295سيطبع أمر cout الأول ببساطة '4' وهو فهرس التكرار الأول لـ 'o' في سلسلة كومة القش. إذا أردنا 'o' في 'العالم' ، فنحن بحاجة إلى تعديل 'pos' للإشارة إلى ما بعد التكرار الأول. سيعود haystack.find (إبرة ، 4) مرة أخرى 4 ، بينما سيعطي haystack.find (إبرة ، 5) 7. إذا لم يتم العثور على السلسلة الفرعية ، فابحث عن () بإرجاع std :: string :: npos.
Npos هي قيمة خاصة تساوي الحد الأقصى للقيمة التي يمكن تمثيلها بواسطة نوع size_type. هنا هو 4294967295. بشكل عام ، يتم استخدامه إما كمؤشر لنهاية السلسلة بواسطة الوظائف التي تتوقع فهرس سلسلة أو كمؤشر خطأ بواسطة الوظائف التي ترجع فهرس السلسلة.
يبحث هذا الرمز البسيط في سلسلة لجميع تكرارات 'C ++' في str2 ويطبع مواضعها:
string str2 = 'C ++ هي لغة برمجة موجهة للكائنات وتتضمن الفئات والوراثة وتعدد الأشكال وتجريد البيانات وتغليفها. يسمح C ++ بمعالجة الاستثناءات والتحميل الزائد للوظائف وهو أمر غير ممكن في C.C ++ وهي لغة قوية وفعالة وسريعة. ' لـ (string :: size_type i = 0، tfind (tfind = wikistr.find ('C ++'، i))! = string :: npos i = tfind + 1) {std :: cout<< 'Found occurrence of 'C++' at position ' << tfind << std::endl }انتاج:
تم العثور على تواجد لـ 'C ++' في الموضع 0 تم العثور على تواجد لـ 'C ++' في الموضع 132 تم العثور على تواجد لـ 'C ++' في الموضع 217#include using namespace std class base {public: void fun_1 () {cout<< 'base class function 1n' } virtual void fun_2() { cout << 'base class function 2n' } virtual void fun_3() { cout << 'base class function 3n' } virtual void fun_4() { cout << 'base class function 4n' } } class derived : public base { public: void fun_1() { cout << 'derived class function 1n' } void fun_2() { cout << 'derived class function 2n' } void fun_4(int x) { coutfun_2 () // الربط المتأخر (RTP) ptr-> fun_3 () // الربط المتأخر (RTP) ptr-> fun_4 () // الربط المبكر ولكن استدعاء الوظيفة هذا // غير قانوني (ينتج خطأ) لأن المؤشر // هو من النوع الأساسي والوظيفة من // فئة مشتقة // p-> fun_4 (5)} انتاج:
خريطة التجزئة مقابل جدول التجزئةوظيفة الفئة الأساسية 1 وظيفة الفئة المشتقة 2 وظيفة الفئة الأساسية 3 وظيفة الفئة الأساسية 4بهذا ننتهي من هذه المقالة حول السلاسل النصية في C ++. أتمنى أن تكون قد فهمت العمليات المختلفة التي يمكن إجراؤها عليها. إذا كنت ترغب في معرفة المزيد ، تحقق من Java Training بواسطة Edureka ، وهي شركة تعليمية موثوقة عبر الإنترنت. إديوريكا تم تصميم دورة التدريب والشهادة لتدريبك على مفاهيم Java الأساسية والمتقدمة جنبًا إلى جنب مع أطر Java المختلفة مثل Hibernate & Spring.
لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات في هذه المدونة وسنعاود الاتصال بك في أقرب وقت ممكن.