كيفية استخدام C ++ String Class

How Use C String Class



السلسلة الحرفية هي سلسلة من الأحرف في مؤشر صفيف ثابت ينتهي بالحرف nul ، 0. عندما يتم تحديدها بواسطة متغير ، لا يمكن أن تقلل السلسلة الحرفية أو تزيد في الطول. لا يمكن إجراء العديد من العمليات على السلسلة الحرفية. لذلك ، هناك حاجة إلى فئة سلسلة. فئة السلسلة C ++ مخصصة لهيكل البيانات ، وهي مجموعة من الأحرف في تسلسل ، مما يسمح لوظائف الأعضاء والمشغلين بالتصرف على الأحرف. تسمح فئة السلسلة بمزيد من التلاعب في السلسلة الحرفية المقابلة ، بدلاً من السلسلة الحرفية فقط. تحتاج إلى معرفة جيدة بالسلسلة الحرفية لفهم هذه المقالة.

فئة وكائنات

الفئة عبارة عن مجموعة من المتغيرات والوظائف التي تعمل معًا ؛ حيث لا يتم تعيين قيم للمتغيرات. عندما يتم تعيين القيم للمتغيرات ، تصبح الفئة كائنًا. القيم المختلفة المعطاة لنفس الفئة تؤدي إلى كائنات مختلفة ؛ أي أن الكائنات المختلفة هي نفس الفئة بقيم مختلفة. يُقال إن إنشاء كائن من فئة ما يؤدي إلى إنشاء الكائن.







الاسم ، السلسلة ، هو فئة. كائن تم إنشاؤه من فئة السلسلة له اسم مبرمج مختار.



هناك حاجة إلى وظيفة تنتمي إلى الفئة لإنشاء مثيل لكائن من الفئة. في C ++ ، هذه الوظيفة لها نفس اسم اسم الفئة. الكائنات التي تم إنشاؤها (تم إنشاء مثيل لها) من الفصل لها أسماء مختلفة تم إعطاؤها لها من قبل المبرمج.



إنشاء كائن من فئة يعني بناء الكائن ؛ هذا يعني أيضًا إنشاء مثيل.





يبدأ برنامج C ++ الذي يستخدم فئة السلسلة بالأسطر التالية في أعلى الملف:

#يشمل
#يشمل
استخدام اسم للمحطة؛

السطر الأول للإدخال / الإخراج. السطر الثاني هو السماح للبرنامج باستخدام جميع ميزات فئة السلسلة. يسمح السطر الثالث للبرنامج باستخدام الأسماء في مساحة الاسم القياسية.



زيادة التحميل على وظيفة

عندما يكون لتوقيعين مختلفين أو أكثر نفس الاسم ، يُقال أن هذا الاسم محمّل بشكل زائد. عندما يتم استدعاء دالة واحدة ، رقم ونوع الوسيطات ، حدد الوظيفة التي يتم تنفيذها.

بناء

سلسلة()
تُنشئ العبارة التالية سلسلة بطول صفري بدون حرف.

سلسلة strCol=سلسلة()؛

يبدأ باسم الفئة (نوع الكائن) ، السلسلة. يتبع ذلك اسم سلسلة الكائن ، الذي قدمه المبرمج. يتبع عامل التخصيص ؛ ثم اسم المنشئ بأقواس فارغة. هنا ، strCol هو الكائن الذي تم إنشاء مثيل له مع جميع أعضاء البيانات (الخصائص) ووظائف الأعضاء (الأساليب).
سلسلة (str)
هذا مشابه لما ورد أعلاه ، ولكنه يأخذ إما سلسلة حرفية أو معرّف كوسيطة ، في المنشئ. يوضح البيان التالي هذا:

سلسلة strCol=سلسلة('انا احبك')؛

البناء مع قائمة المُهيئ

يوضح الكود التالي هذا:

سلسلة strCol=سلسلة({'أنا'و'و'ال'و'أو'و'الخامس'و'و'و'و'و'و'أو'و'أنت'و' 0'})؛

السلسلة الحرفية هي أنا أحبك. لاحظ حرف nul في نهاية قائمة التهيئة.

سلسلة (str، n)

هذا يشكل مجموعة سلسلة ، من الأحرف n الأولى من سلسلة أخرى. يوضح الكود التالي هذا:

شارص[] = 'انا احبك'؛
سلسلة strCol=سلسلة(صو 6)؛
كلفة<<ستركول<< 'ن'؛

الإخراج هو أنني أحب مع أول 6 أحرف من أنا أحبك. تذكر: المسافة المفردة هي حرف.

سلسلة (str ، pos ، n)

يشكل هذا مجموعة سلسلة من الأحرف n ، بدءًا من الموضع المفهرس الصفري ، pos ، لسلسلة أخرى. يوضح الكود التالي هذا:

شارص[] = 'انا احبك'؛
سلسلة strCol=سلسلة(صو 2و 4)؛
كلفة<<ستركول<< 'ن'؛

الخرج هو الحب.

بالنسبة للحالتين السابقتين ، إذا كان n أكبر من حجم السلسلة ، فسيتم طرح استثناء out_of_range - انظر لاحقًا.

سلسلة (ن ، 'ج')

يشكل مجموعة من الأحرف n ، حيث تكون جميع الأحرف متشابهة. انصح،

سلسلة strCol=سلسلة(5و'و')؛
كلفة<<ستركول<< 'ن'؛

الناتج هو ، eeeee ، 5 e’s.

تخصيص سلسلة

يمكن تعيين سلسلة على النحو التالي ، بعد التصريح عن كلتا السلسلتين:

سلسلة strCol1=سلسلة('انا احبك')؛
سلسلة strCol2؛
strCol2=strCol1؛
كلفة<<strCol2<< 'ن'؛

الإخراج هو ، أنا أحبك.

البناء باستخدام التكرار

يوفر المكرر تمثيلًا عامًا للمسح ، من خلال قيم المجموعة. بناء جملة لإنشاء سلسلة مع مكرر ، هو:

نموذج<فئة InputIterator>
الأساسية_السلسلة(يبدأ InputIteratorونهاية المدخلاتو مقدار ثابتالمخصص&
إلى=المخصص())؛

هذا يبني سلسلة للمجال [البداية ، النهاية) - انظر التفاصيل لاحقًا.

تدمير سلسلة

لتدمير الخيط ، فقط اتركه يخرج عن النطاق.

الوصول إلى عنصر فئة السلسلة

يمكن أن يكون كائن سلسلة مُنشأة مُبرمجًا فرعيًا (مفهرسًا) مثل المصفوفة. يبدأ عد الفهرس من الصفر.

اسم السلسلة [i]

ترجع العملية stringName [i] مرجعًا إلى الحرف (العنصر) في iذفهرس مجموعة الأحرف. مخرجات الكود التالية v:

سلسلة strCol=سلسلة('انا احبك')؛
شارالفصل=ستركول[4]؛
كلفة<<الفصل<< 'ن'؛

stringName [i] const

يتم تنفيذ عملية stringName [i] const بدلاً من stringName [i] عندما يكون كائن السلسلة كائنًا ثابتًا. يتم استخدامه في الكود التالي على سبيل المثال:

مقدار ثابتسلسلة strCol=سلسلة('انا احبك')؛
شارالفصل=ستركول[4]؛
كلفة<<الفصل<< 'ن'؛

يعيد التعبير مرجعًا ثابتًا إلى iذعنصر من كائن السلسلة. لا يمكن تغيير أي من عناصر السلسلة.

تعيين حرف مع منخفض

يمكن تخصيص حرف لكائن سلسلة غير ثابت ، على النحو التالي:

سلسلة strCol=سلسلة('أنا أتصل')؛
ستركول[2] = 'F'؛
كلفة<<ستركول<< 'ن'؛

الإخراج أنا أسقط. تم تغيير 'c' إلى 'f'.

stringName.at (i)

stringName.at (i) مشابه لـ stringName [i] ، لكن stringName.at (i) أكثر موثوقية. يوضح الكود التالي كيف يجب استخدامه:

سلسلة strCol=سلسلة('انا احبك')؛
شارالفصل=ستركول.في(4)؛
كلفة<<الفصل<< 'ن'؛

في () هي في الواقع دالة عضو في فئة سلسلة.

stringName.at (i) const

stringName.at (i) const مشابه لـ stringName [i] const ، لكن stringName.at (i) const أكثر موثوقية. يتم تنفيذ stringName.at (i) const بدلاً من stringName.at (i) عندما يكون كائن السلسلة عبارة عن كائن سلسلة ثابتة. يتم استخدامه في الكود التالي ، على سبيل المثال:

مقدار ثابتسلسلة strCol=سلسلة('انا احبك')؛
شارالفصل=ستركول.في(4)؛
كلفة<<الفصل<< 'ن'؛

at () const هي في الواقع دالة عضو في فئة سلسلة.

تعيين قيمة باستخدام الدالة at ()

يمكن تعيين قيمة إلى كائن سلسلة غير ثابت ، باستخدام الدالة at () ، على النحو التالي:

سلسلة strCol=سلسلة('أنا أتصل')؛
ستركول.في(2) = 'F'؛
كلفة<<ستركول<< 'ن'؛

الإخراج أنا أسقط.

مشكلة في البرمجة النصية الفرعية

تكمن مشكلة البرمجة الفرعية (الفهرسة) في أنه إذا كان الفهرس خارج النطاق ، فقد يتم الحصول على نتيجة خاطئة ، أو قد يتم إصدار خطأ في وقت التشغيل.

أمام()

يؤدي هذا إلى إرجاع مرجع إلى العنصر الأول من كائن السلسلة ، دون إزالة العنصر. ناتج الكود التالي هو 'أنا'.

سلسلة strCol=سلسلة('انا احبك')؛
شارالفصل=ستركول.أمام()؛
كلفة<<الفصل<< 'ن'؛

لا يتم إزالة الحرف من كائن السلسلة.

الجبهة () const

عندما يسبق بناء كائن السلسلة بـ const ، يتم تنفيذ التعبير front () const بدلاً من front (). يتم استخدامه في الكود التالي ، على سبيل المثال.

مقدار ثابتسلسلة strCol=سلسلة('انا احبك')؛
شارالفصل=ستركول.أمام()؛
كلفة<<الفصل<< 'ن'؛

يتم إرجاع مرجع ثابت. لا يتم إزالة العنصر من كائن السلسلة. لا يمكن تغيير أي حرف لكائن سلسلة ثابتة.

الى الخلف()

يؤدي هذا إلى إرجاع مرجع إلى العنصر الأخير في كائن السلسلة ، دون إزالة العنصر. ناتج الكود التالي هو 'u'.

سلسلة strCol=سلسلة('انا احبك')؛
شارالفصل=ستركول.الى الخلف()؛
كلفة<<الفصل<< 'ن'؛

رجوع () const

عندما يسبق بناء كائن السلسلة بـ const ، يتم تنفيذ التعبير back () const بدلاً من back (). يتم استخدامه في الكود التالي ، على سبيل المثال.

مقدار ثابتسلسلة strCol=سلسلة('انا احبك')؛
شارالفصل=ستركول.الى الخلف()؛
كلفة<<الفصل<< 'ن'؛

يتم إرجاع مرجع ثابت. لا يتم إزالة العنصر من كائن السلسلة.

قدرة السلسلة

حجم_نوع السعة () لا استثناء

يتم إرجاع العدد الإجمالي للأحرف التي يمكن للسلسلة الاحتفاظ بها دون الحاجة إلى إعادة التخصيص ، بواسطة وظيفة عضو السعة هذه. مقطع الكود لهذا هو:

سلسلة strCol=سلسلة()؛
intعلى واحد=ستركول.الاهلية()؛
كلفة<<على واحد<< 'ن'؛

الإخراج هو 15 على جهاز الكمبيوتر الخاص بي.

احتياطي (ن)

لا تتوفر مساحة الذاكرة دائمًا في المتجر المجاني. يمكن حجز مساحة إضافية مسبقًا. ضع في اعتبارك مقطع الكود التالي:

سلسلة strCol=سلسلة('حب')؛
ستركول.الاحتياطي(6)؛
كلفة<<ستركول.الاهلية() << 'ن'؛

الإخراج هو 15 على جهاز الكمبيوتر الخاص بي.

الحجم () لا يستثني من ذلك

هذا ما يعيد عدد الأحرف في السلسلة. يوضح الكود التالي:

سلسلة strCol=سلسلة('انا احبك')؛
intعلى واحد=ستركول.بحجم()؛
كلفة<<على واحد<< 'ن'؛

الإخراج هو 10 ، والذي لا يتضمن nul ، 0 حرف.

الطول () لا يستثني من ذلك

-نفس الحجم().
ملحوظة:بحجم() <=الاهلية().

يتقلص ليساوي الحجم()

يمكن أن تقلل السعة () إلى الحجم () عن طريق التسبب في إعادة التخصيص ؛ ليس بواجب. يوضح الكود التالي هذا:

سلسلة strCol=سلسلة('انا احبك')؛
ستركول.الاحتياطي(12)؛
ستركول.يتقلص ليساوي الحجم()؛
intس=ستركول.بحجم()؛
كلفة<<س<< 'ن'؛

الناتج هو 10 وليس 12 أو 16. تقوم الدالة بإرجاع الفراغ.

تغيير الحجم (sz) ، تغيير الحجم (sz ، 'c')

هذا يغير حجم السلسلة. إذا كان الحجم الجديد أصغر من الحجم القديم ، فسيتم مسح العناصر الموجودة في النهاية. إذا كان الحجم الجديد أطول ، فسيتم إضافة بعض الأحرف الافتراضية في النهاية. لإضافة حرف معين ، استخدم الدالة resize () مع وسيطتين. يوضح مقطع الكود التالي استخدام الوظيفتين:

سلسلة strCol=سلسلة('انا احبك')؛
ستركول.تغيير الحجم(6)؛
كلفة<< 'حجم جديد من strCol:' <<ستركول.بحجم() << 'ن'؛
سلسلة strCol1=سلسلة('أنا أحب'و 'و')؛
strCol1.تغيير الحجم(12)؛
كلفة<< 'حجم جديد من strCol1:' <<strCol1.بحجم() << 'ن'؛

الخرج هو:

الحجم الجديد لـ strCol: 6
الحجم الجديد لـ strCol1: 12
ترجع الدالة باطل.

مسح () لا استثناء

يزيل كل العناصر من السلسلة ، كما يوضح مقطع الكود التالي:

سلسلة strCol=سلسلة('انا احبك')؛
ستركول.صافي()؛
كلفة<<ستركول.بحجم() << 'ن'؛

الناتج هو 0. ترجع الدالة باطل.

فارغ () const noexcept

يؤدي هذا إلى إرجاع 1 للقيمة true إذا لم يكن هناك حرف في كائن السلسلة ، أو 0 للقيمة false إذا لم يكن كائن السلسلة فارغًا. يوضح الكود التالي هذا:

سلسلة strCol1=سلسلة('انا احبك')؛
كلفة<<strCol1.فارغة() << 'ن'؛
سلسلة strCol2=سلسلة()؛
كلفة<<strCol2.فارغة() << 'ن'؛

الخرج هو:

0
1

إرجاع التكرارات وفئة السلسلة

المكرر هو مثل المؤشر ولكن لديه وظائف أكثر من المؤشر.

تبدأ () لا باستثناء

إرجاع مكرر يشير إلى الحرف الأول (عنصر) من كائن السلسلة ، كما هو الحال في مقطع التعليمات البرمجية التالي:

سلسلة strCol=سلسلة('انا احبك')؛
الأساسية_السلسلة<شار> ::مكررالتكرار=ستركول.يبدأ()؛
كلفة<< *التكرار<< 'ن'؛

الإخراج هو 'أنا'. لاحظ الطريقة التي تم بها التصريح عن التصريح الذي يستقبل المكرر. يتم إلغاء الإشارة إلى المكرر في تعبير إرجاع للحصول على القيمة ، بنفس الطريقة التي يتم بها إلغاء الإشارة إلى المؤشر.

تبدأ () const noexcept؛

إرجاع مكرر يشير إلى العنصر الأول من مجموعة كائن السلسلة. عندما يسبق بناء الكائن بـ const ، يتم تنفيذ التعبير start () const بدلاً من start (). في ظل هذا الشرط ، لا يمكن تعديل العنصر المقابل في الكائن. يتم استخدامه في الكود التالي ، على سبيل المثال.

مقدار ثابتسلسلة strCol=سلسلة('انا احبك')؛
الأساسية_السلسلة<شار> ::المُحددالتكرار=ستركول.يبدأ()؛
كلفة<< *التكرار<< 'ن'؛

الإخراج هو 'أنا'. لاحظ أنه تم استخدام const_iterator هذه المرة ، بدلاً من مجرد مكرر ، لتلقي المكرر المرتجع.

النهاية () باستثناء

إرجاع مكرر يشير مباشرة إلى ما بعد العنصر الأخير في كائن السلسلة. ضع في اعتبارك مقطع الكود التالي:

سلسلة strCol=سلسلة('انا احبك')؛
الأساسية_السلسلة<شار> ::مكررالتكرار=ستركول.نهاية()؛
كلفة<< *التكرار<< 'ن'؛

الناتج فارغ ، وهو لا شيء ، حيث لا يوجد عنصر ملموس خارج العنصر الأخير.

end () const noexcept

إرجاع مكرر يشير مباشرة إلى ما بعد العنصر الأخير في كائن السلسلة. عندما يسبق بناء كائن السلسلة بـ const ، يتم تنفيذ التعبير end () const بدلاً من end (). ضع في اعتبارك مقطع الكود التالي:

مقدار ثابتسلسلة strCol=سلسلة('انا احبك')؛
الأساسية_السلسلة<شار> ::المُحددالتكرار=ستركول.نهاية()؛
كلفة<< *التكرار<< 'ن'؛

الناتج فارغ. لاحظ أنه تم استخدام const_iterator هذه المرة ، بدلاً من مجرد مكرر ، لتلقي المكرر المرتجع.

التكرار العكسي

من الممكن أن يكون لديك مكرر يتكرر من النهاية الفعلية إلى ما قبل العنصر الأول مباشرةً:

rbegin () لا استثناء

إرجاع مكرر يشير إلى العنصر الأخير من الكائن الذي تم إنشاء مثيل له ، كما في مقطع التعليمات البرمجية التالي:

سلسلة strCol=سلسلة('انا احبك')؛
الأساسية_السلسلة<شار> ::العكسيالتكرار=ستركول.rbegin()؛
كلفة<< *التكرار<< 'ن'؛

الناتج هو 'u'. لاحظ الطريقة التي تم بها التصريح عن التصريح الذي يستقبل المكرر العكسي. يتم إلغاء الإشارة إلى المكرر في تعبير إرجاع للحصول على القيمة ، بنفس الطريقة التي يتم بها إلغاء الإشارة إلى المؤشر.

rbegin () const noexcept ؛

إرجاع مكرر يشير إلى العنصر الأخير في كائن السلسلة. عندما يسبق إنشاء الكائن بـ const ، يتم تنفيذ التعبير rbegin () const بدلاً من rbegin (). في ظل هذا الشرط ، لا يمكن تعديل العنصر المقابل في الكائن. يتم استخدام الميزة في الكود التالي ، على سبيل المثال.

مقدار ثابتسلسلة strCol=سلسلة('انا احبك')؛
الأساسية_السلسلة<شار> ::const_reverse_iteratorالتكرار=ستركول.rbegin()؛
كلفة<< *التكرار<< 'ن'؛

الناتج هو 'u'. لاحظ أنه تم استخدام const_reverse_iterator هذه المرة ، بدلاً من العكس فقط ، لتلقي المكرر المرتجع.

عرض () لا استثناء

إرجاع مكرر يشير مباشرة قبل العنصر الأول من كائن السلسلة. ضع في اعتبارك مقطع الكود التالي:

سلسلة strCol=سلسلة('انا احبك')؛
الأساسية_السلسلة<شار> ::العكسيالتكرار=ستركول.يصنع()؛
كلفة<< *التكرار<< 'ن'؛

الناتج فارغ ، وهو لا شيء ، حيث لا يوجد عنصر ملموس قبل العنصر الأول مباشرة.

تقديم () const noexcept

إرجاع مكرر يشير مباشرة قبل العنصر الأول من كائن السلسلة. عندما يسبق بناء الكائن بـ const ، يتم تنفيذ التعبير rend () const بدلاً من rend (). ضع في اعتبارك مقطع الكود التالي:

مقدار ثابتسلسلة strCol=سلسلة('انا احبك')؛
الأساسية_السلسلة<شار> ::const_reverse_iteratorالتكرار=ستركول.يصنع()؛
كلفة<< *التكرار<< 'ن'؛

الناتج فارغ. لاحظ أنه تم استخدام const_reverse_iterator هذه المرة ، بدلاً من العكس فقط ، لتلقي المكرر المرتجع.

معدِّلات السلسلة

يمكن للمعدِّل الذي يعدل كائن السلسلة أن يأخذ مكررًا أو يعيده.

إلحاق

الأساسية_السلسلة&المشغل أو العامل+ =(مقدار ثابتالأساسية_السلسلة&ص)

لإلحاق كائن السلسلة الأيمن بكائن السلسلة الأيسر. مثال:

سلسلة strCol1=سلسلة('أنا أحب')؛
سلسلة strCol2=سلسلة(' أنت')؛
strCol1+ =strCol2؛
كلفة<<strCol1<< 'ن'؛

الإخراج أنا أحبك. لا تنس أن strCol1 + = strCol2 هو نفسه strCol1 = strCol1 + strCol2.

Basic_string & عامل التشغيل + = (الرموز الثابتة *)

لإلحاق سلسلة حرفية بمجموعة كائن سلسلة. مثال:

سلسلة strCol=سلسلة('أنا أحب')؛
ستركول+ = ' أنت'؛
كلفة<<ستركول<< 'ن'؛

الإخراج: أحبك.

Basic_string & عامل التشغيل + = (charT c)

لإلحاق حرف واحد بسلسلة كائن. مثال:

سلسلة strCol=سلسلة('أنا أحبك')؛
ستركول+ = 'أنت'؛
كلفة<<ستركول<< 'ن'؛

الإخراج: أحبك.

Basic_string & عامل التشغيل + = (initializer_list)

يُلحق قائمة مُهيئ. مثال:

سلسلة strCol=سلسلة('أنا أحب')؛
ستركول+ = {'و'و'و'أو'و'أنت'و' 0'}؛
كلفة<<ستركول<< 'ن'؛

الإخراج: أحبك. من الجيد دائمًا إضافة nul ، 0 في نهاية قائمة مُهيئ الأحرف.

basic_string & append (const basic_string & str)

لإلحاق كائن سلسلة الوسيطة بكائن السلسلة الرئيسي. مثال:

سلسلة strCol1=سلسلة('أنا أحب')؛
سلسلة strCol2=سلسلة(' أنت')؛
strCol1.ألحق(strCol2)؛
كلفة<<strCol1<< 'ن'؛

الإخراج: أحبك.

basic_string & append (const charT * s)

لإلحاق سلسلة حرفية الوسيطة بالسلسلة الرئيسية. مثال

سلسلة strCol=سلسلة('أنا أحب')؛
ستركول=ستركول.ألحق(' أنت')؛
كلفة<<ستركول<< 'ن'؛

الإخراج: أحبك.

Basic_string & append (initializer_list) (قائمة التهيئة)

يُلحق قائمة المُهيئ ، والتي تعد وسيطة ، بالسلسلة الرئيسية. مثال:

سلسلة strCol=سلسلة('أنا أحب')؛
ستركول=ستركول.ألحق({'و'و'و'أو'و'أنت'و' 0'})؛
كلفة<<ستركول<< 'ن'؛

الإخراج: أحبك. من الجيد دائمًا إضافة nul ، 0 حرف في نهاية قائمة التهيئة.

Basic_string & append (size_type n، charT c)

يُلحق n من نفس الحرف. مثال:

سلسلة strCol=سلسلة('التبويب')؛
ستركول=ستركول.ألحق(2و 'أو')؛
كلفة<<ستركول<< 'ن'؛

الإخراج: المحرمات.

basic_string & append (رمز كونستري * s ، size_type n)

لإلحاق أول n من عناصر سلسلة حرفية بكائن السلسلة الرئيسي. مثال:

سلسلة strCol=سلسلة('أنا أحب')؛
ستركول=ستركول.ألحق(' وأنت أيضا'و 4)؛
كلفة<<ستركول<< 'ن'؛

الخرج هو: أنا أحبك. إذا كان n أكبر من طول الحرف ، فسيتم طرح استثناء length_error.

Basic_string & append (const basic_string & str ، size_type pos ، size_type n = npos)

لإلحاق حرف n من الفهرس ، pos بالسلسلة الرئيسية. مثال:

سلسلة strCol=سلسلة('أنا أحب')؛
ستركول=ستركول.ألحق('هل أنت كذلك'و 2و 4)؛
كلفة<<ستركول<< 'ن'؛

الإخراج: أحبك. سيتم طرح استثناء هنا أيضًا ، انظر لاحقًا.

التخصيص

الأساسية_السلسلة&تعيين(مقدار ثابتالأساسية_السلسلة&ص)

يعيّن كائن سلسلة الوسيطة إلى السلسلة الرئيسية ، ويستبدل أي محتوى كان موجودًا.

سلسلة strCol1=سلسلة('انا احبك')؛
سلسلة strCol2=سلسلة('وهي في حاجة لي')؛
strCol1=strCol1.تعيين(strCol2)؛
كلفة<<strCol1<< 'ن'؛

الإخراج: هي بحاجة لي.

الأساسية_السلسلة&تعيين(مقدار ثابتجدول*س)

يخصص وسيطة سلسلة حرفية للسلسلة الرئيسية ، لتحل محل أي محتوى كان موجودًا.

سلسلة strCol=سلسلة('انا احبك')؛
ستركول=ستركول.تعيين('وهي في حاجة لي')؛
كلفة<<ستركول<< 'ن'؛

الإخراج: هي بحاجة لي.

الأساسية_السلسلة&تعيين(قائمة التهيئة<جدول>)

يعيّن وسيطة قائمة مُهيئ للسلسلة الرئيسيةواستبدال أي محتوى كان هناك.
[سم مكعب لانج='ج'نجا='حقيقية'العرض='780']
سلسلة strCol=سلسلة('انا احبك')؛
ستركول=ستركول.تعيين({'س'و'ح'و'و'و'و'ن'و'و'و'و'و'د'و'س'و'و'م'و'و'و' 0'})؛
كلفة<<ستركول<< 'ن'؛

الإخراج: هي بحاجة لي. من الجيد دائمًا إضافة nul ، 0 في نهاية قائمة الأحرف ، لتكوين سلسلة حرفية.

الأساسية_السلسلة&تعيين(مقدار ثابتجدول*سوsize_type n)

يعيّن أول حرف n من وسيطة حرفية للسلسلة إلى السلسلة الرئيسية ، مع استبدال أي محتوى كان موجودًا.

سلسلة strCol=سلسلة('انا احبك')؛
ستركول=ستركول.تعيين('وهي في حاجة لي'و 9)؛
كلفة<<ستركول<< 'ن'؛

الإخراج: هي بحاجة.

الأساسية_السلسلة&تعيين(size_type nوالرسم البياني ج)

يخصص وسيطة لـ n من نفس الأحرف للسلسلة الرئيسية ، مع استبدال أي محتوى كان موجودًا.

سلسلة strCol=سلسلة('انا احبك')؛
ستركول=ستركول.تعيين(4و 'و')؛
كلفة<<ستركول<< 'ن'؛

الإخراج: eeee

الأساسية_السلسلة&تعيين(مقدار ثابتالأساسية_السلسلة&صوsize_type posو
size_type n=npos)

يخصص أحرف n من وسيطة كائن سلسلة ، بدءًا من pos ، إلى السلسلة الرئيسية ، لتحل محل أي محتوى كان موجودًا.

سلسلة strCol=سلسلة('انا احبك')؛
ستركول=ستركول.تعيين('وهي في حاجة لي'و 4و 5)؛
كلفة<<ستركول<< 'ن'؛

الإخراج: الاحتياجات. من شأنه أن يطرح استثناء - انظر لاحقًا.

إدخال

الأساسية_السلسلة&إدراج(size_type posو مقدار ثابتالأساسية_السلسلة&ص)

إدراج وسيطة كائن السلسلة إلى السلسلة الرئيسية ، في index ، pos.

سلسلة strCol1=سلسلة('انا احبك')؛
سلسلة strCol2=سلسلة(الكراهية و)؛
strCol1=strCol1.إدراج(2وstrCol2)؛
كلفة<<strCol1<< 'ن'؛

الإخراج: أنا أكرهك وأحبك. من شأنه أن يطرح استثناء - انظر لاحقًا.

الأساسية_السلسلة&إدراج(size_type pos1و مقدار ثابتالأساسية_السلسلة&
صوsize_type pos2وsize_type n=npos)

يُدرج عددًا من الأحرف n من pos2 من وسيطة كائن السلسلة ، إلى السلسلة الرئيسية ، في index ، pos1.

سلسلة strCol1=سلسلة('انا احبك')؛
سلسلة strCol2=سلسلة('الكراهية والعوز والحاجة')؛
strCol1=strCol1.إدراج(2وstrCol2و 6و 9)؛
كلفة<<strCol1<< 'ن'؛

الإخراج: أريدك وأحبك.

إدراج مكرر (ثابت p ، حرف ج)

يُدرج حرفًا معينًا ، وهو وسيطة ، في الموضع الذي يشير إليه المكرر. يُرجع مكررًا لموضع الحرف المُدرج حديثًا.

سلسلة strCol=سلسلة('انا احبك')؛
الأساسية_السلسلة<شار> ::مكررالتكرار=ستركول.يبدأ()؛
++التكرار؛ ++التكرار؛ ++التكرار؛ ++التكرار؛ ++التكرار؛ ++التكرار؛
الأساسية_السلسلة<شار> ::مكررشبكة الاتصال=ستركول.إدراج(التكرارو 'د')؛
كلفة<< *شبكة الاتصال<< 'ن'؛
كلفة<<ستركول<< 'ن'؛

الخرج هو:

'د'

أحببتك

إدراج المكرر (const_iterator p ، size_type n ، charT c)

يُدرج n من نفس الحرف من الوسيطة ، في الموضع الذي يشير إليه المكرر. يُرجع مكررًا لموضع بداية نفس الأحرف المُدرجة حديثًا.

سلسلة strCol=سلسلة('تاب في الأرض.')؛
الأساسية_السلسلة<شار> ::مكررالتكرار=ستركول.يبدأ()؛
++التكرار؛ ++التكرار؛ ++التكرار؛
الأساسية_السلسلة<شار> ::مكررشبكة الاتصال=ستركول.إدراج(التكرارو 2و 'أو')؛
كلفة<< *شبكة الاتصال<< 'ن'؛
كلفة<<ستركول<< 'ن'؛

الخرج هو:

'أو'

المحرمات في الأرض.

الأساسية_السلسلة&إدراج(size_type posو مقدار ثابتجدول*س)

يُدرج سلسلة وسيطة حرفية في الفهرس ، ونقاط البيع في السلسلة الرئيسية.

سلسلة strCol=سلسلة('تاب في الأرض.')؛
ستركول=ستركول.إدراج(3و 'أوه')؛
كلفة<<ستركول<< 'ن'؛

الإخراج: المحرمات في الأرض.

الأساسية_السلسلة&إدراج(size_type posو مقدار ثابتجدول*سوsize_type n)

يُدرج الأحرف n الأولى من سلسلة الوسيطة الحرفية ، في الفهرس ، ونقطة البيع في السلسلة الرئيسية.

سلسلة strCol=سلسلة('تاب في الأرض.')؛
ستركول=ستركول.إدراج(3و 'oooo'و 2)؛
كلفة<<ستركول<< 'ن'؛

الإخراج: المحرمات في الأرض.

استبدال

الأساسية_السلسلة&يحل محل(size_type pos1وsize_type n1و مقدار ثابتالأساسية_السلسلة&ص))

يستبدل أحرف n1 في كائن السلسلة الرئيسي من index ، pos1 ، بكائن سلسلة الوسيطة.

سلسلة strCol1=سلسلة('انا احبك')؛
سلسلة strCol2=سلسلة('أكرهك')؛
strCol1=strCol1.يحل محل(2و 4وstrCol2)؛
كلفة<<strCol1<< 'ن'؛

الإخراج: أنا أكرهك وأنت. من شأنه أن يطرح استثناء - انظر لاحقًا.

الأساسية_السلسلة&يحل محل(size_type pos1وsize_type n1و مقدار ثابتالأساسية_السلسلة&
صوsize_type pos2وsize_type n2=npos)

يستبدل أحرف n1 في كائن السلسلة الرئيسي من الفهرس ، pos1 ، بحروف n2 من كائن سلسلة الوسيطة من الفهرس ، pos2.

سلسلة strCol1=سلسلة('انا احبك')؛
سلسلة strCol2=سلسلة('نحن نكرهها ونكرهها')؛
strCol1=strCol1.يحل محل(2و 4وstrCol2و 3و 12)؛
كلفة<<strCol1<< 'ن'؛

الإخراج: أنا أكرهه وأنت.

الأساسية_السلسلة&يحل محل(size_type pos1وsize_type n1و مقدار ثابتجدول*سو
size_type n2)

يستبدل أحرف n1 في كائن السلسلة الرئيسي من الفهرس ، pos1 ، بأحرف n2 الأولى من وسيطة السلسلة الحرفية.

سلسلة strCol1=سلسلة('انا احبك')؛
strCol1=strCol1.يحل محل(2و 4و 'أكرهه وهي'و 12)؛
كلفة<<strCol1<< 'ن'؛

الإخراج: أنا أكرهه وأنت.

basic_string & replace (size_type pos، size_type n، const charT * s)

يستبدل n حرفًا في كائن السلسلة الرئيسي من index ، pos ، مع وسيطة السلسلة الحرفية.

سلسلة strCol1=سلسلة('انا احبك')؛
strCol1=strCol1.يحل محل(2و 4و 'أكرهه و')؛
كلفة<<strCol1<< 'ن'؛

الإخراج: أنا أكرهه وأنت.

الأساسية_السلسلة&يحل محل(size_type pos1وsize_type n1وsize_type n2والرسم البياني ج)

يستبدل أحرف n1 في كائن السلسلة الرئيسي من الفهرس ، pos1 ، بـ n2 من نفس حرف الوسيطة.

سلسلة strCol1=سلسلة('جهاز لوحي سيئ هناك.')؛
strCol1=strCol1.يحل محل(9و 3و 2و 'أو')؛
كلفة<<strCol1<< 'ن'؛

الإخراج: من المحرمات السيئة هناك ..

محو مكرر (ثابت ع)

يزيل حرفًا في الموضع الذي يشير إليه المكرر ؛ ثم تقوم بإرجاع موضع المكرر ، الذي يشغله الآن الحرف الذي كان بجوار هذا الحرف (أو النهاية ()). يوضح الكود التالي هذا:

سلسلة strCol=سلسلة('ا ب ت ث')؛
الأساسية_السلسلة<شار> ::مكررالتكرار=ستركول.يبدأ()؛
++التكرار؛ ++التكرار؛
ستركول.محو(التكرار)؛
كلفة<<ستركول[0] << ' <<ستركول[1] << '
'
<<ستركول[2]<< 'ن'؛

الخرج: أ ب د

الأساسية_السلسلة&محو(size_type pos= 0وsize_type n=npos)

يزيل n حرفًا من الفهرس ، نقاط البيع.

سلسلة strCol=سلسلة('ا ب ت ث')؛
ستركول.محو(1و 2)؛
كلفة<<ستركول[0] << ' <<ستركول[1] << 'ن'؛

المخرجات: أ د

رد دفع باطل (مخطط ج)

لإضافة حرف واحد في نهاية السلسلة:

سلسلة strCol=سلسلة('ا ب ت ث')؛
ستركول.إدفع إلى الخلف('5')؛
كلفة<<ستركول<< 'ن'؛

الإخراج: abcd5.0

pop_back باطل ()

يزيل آخر حرف دون إعادته. يتم تقليل حجم السلسلة بمقدار 1.

سلسلة strCol=سلسلة('abcde')؛
ستركول.عودة البوب()؛
كلفة<<ستركول<< 'ن'؛

الإخراج: abcd

مقايضة باطلة (basic_string & s)

يمكن تبديل القيم الحرفية لكائني سلسلة.

سلسلة strCol1=سلسلة(<يساعد='post-69618 -__ DdeLink__781_3724385525'>إلى>'abcde')؛
سلسلة strCol2=سلسلة('1234567')؛
strCol1.مبادلة، مقايضة(strCol2)؛
كلفة<<strCol1<< 'ن'؛
كلفة<<strCol2<< 'ن'؛

الخرج هو:

'1234567'
'abcde'

عمليات السلاسل

الحرف الثابت * c_str () لا يستثني من ذلك

إرجاع المؤشر إلى العنصر الأول من السلسلة. يمكن زيادة المؤشر.

مقدار ثابتسلسلة strCol=سلسلة('abcde')؛
مقدار ثابت شار*ص=ستركول.ج_ستر()؛
كلفة<< *ص<< 'ن'؛
++ص؛
كلفة<< *ص<< 'ن'؛

الإخراج هو:

إلى
ب

بسبب الثابت الثاني في العنوان ، لا يمكن للبرنامج تغيير أي حرف في السلسلة. يسبق البناء الثابت.

const charT * data () const noexcept

إرجاع المؤشر إلى العنصر الأول من السلسلة. يمكن زيادة المؤشر.

مقدار ثابتسلسلة strCol=سلسلة('abcde')؛
مقدار ثابت شار*ص=ستركول.البيانات()؛
كلفة<< *ص<< 'ن'؛
++ص؛
كلفة<< *ص<< 'ن'؛

الإخراج هو:

إلى
ب

بسبب الثابت الثاني في العنوان ، لا يمكن للبرنامج تغيير أي حرف في السلسلة. يسبق البناء الثابت.

Basic_string substr (size_type pos = 0، size_type n = npos) const

تُرجع كائن سلسلة من n حرفًا للسلسلة الفرعية التي تبدأ من الفهرس ، pos.

مقدار ثابتسلسلة strCol=سلسلة('abcdefghij')؛
مقدار ثابتسلسلة retStr=ستركول.الجزء الفرعي(2و 4)؛
كلفة<<retStr<< 'ن'؛

الإخراج: cdef

find () وظائف الأعضاء

size_type find (const basic_string & str، size_type pos = 0) const noexcept

يبحث عن كائن سلسلة فرعية يبدأ من الفهرس ، pos. إذا تم العثور عليه ، يتم إرجاع بداية السلسلة الفرعية في السلسلة الرئيسية.

سلسلة strCol=سلسلة('نحن العالم!')؛
سلسلة strCol1=سلسلة('ال')؛
intعلى واحد=ستركول.تجد(strCol1و 2)؛
كلفة<<على واحد<< 'ن'؛

انتاج:

الفهرس: 7
يعود -1 ، في حالة عدم العثور عليه.

size_type find (const charT * s، size_type pos = 0) const

يبحث عن سلسلة حرفية فرعية تبدأ من الفهرس ، pos. إذا تم العثور عليه ، يتم إرجاع بداية السلسلة الفرعية في السلسلة الرئيسية.

سلسلة strCol=سلسلة('نحن العالم!')؛
intعلى واحد=ستركول.تجد('نكون'و 0)؛
كلفة<<على واحد<< 'ن'؛

بما أن الموضع = 0 هو الوضع الافتراضي ، فمن الممكن أن يتم حذف 0 في الوسيطة.

الإخراج: 3

يعود -1 ، في حالة عدم العثور عليه.

العثور على size_type (الحرف الثابت * s ، الحجم_نوع الموضع ، الحجم_النوع n) ثابت

يبحث عن أول حرف n من سلسلة حرفية فرعية تبدأ من الفهرس ، pos. إذا تم العثور عليه ، يتم إرجاع بداية السلسلة الفرعية في السلسلة الرئيسية.

سلسلة strCol=سلسلة('أكبر فتى')؛
intعلى واحد=ستركول.تجد('أكبر'و 1و 3)؛
كلفة<<على واحد<< 'ن'؛

الإخراج: 4

يعود -1 ، في حالة عدم العثور عليه.

size_type find (charT c، size_type pos = 0) const

يبحث عن الحرف c بداية من الفهرس ، pos. إذا تم العثور عليه ، يتم إرجاع بداية السلسلة الفرعية في السلسلة الرئيسية. إذا لم يتم العثور عليها ، يتم إرجاع -1.

سلسلة strCol=سلسلة('نحن العالم!')؛
intعلى واحد=ستركول.تجد('مع')؛
كلفة<<على واحد<< 'ن'؛

الإخراج: -1

توجد وظائف عضو البحث العكسي () التالية:

حجم_نوع rfind(مقدار ثابتالأساسية_السلسلة&صوsize_type pos=npos) مقدار ثابتلا باستثناء؛
حجم_نوع rfind(مقدار ثابتجدول*سوsize_type pos=npos) مقدار ثابت؛
حجم_نوع rfind(مقدار ثابتجدول*سوsize_type posوsize_type n) مقدار ثابت؛
حجم_نوع rfind(الرسم البياني جوsize_type pos=npos) مقدار ثابت؛

وظائف عضو المقارنة

لا يوجد استثناء int مقارنة (const basic_string & str)

يقارن كائن سلسلة الوسيطة بكائن السلسلة الرئيسي. إذا حدثت السلسلة الرئيسية قبل الوسيطة (في القاموس) فإنها ترجع رقمًا موجبًا. إذا حدث بعد السلسلة الرئيسية ، فإنه يقوم بإرجاع رقم سالب. إذا كانت السلسلتان متماثلتين ، فإنها تُرجع صفرًا.

سلسلة strCol1=سلسلة('يحشد')؛
سلسلة strCol2=سلسلة('اشخاص')؛
intعلى واحد=strCol1.قارن(strCol2)؛
كلفة<<على واحد<< 'ن'؛

المخرجات: -13

int قارن (رموز ثابتة) ثابته

نفس ما ورد أعلاه ، لكن الوسيطة سلسلة حرفية.

سلسلة strCol1=سلسلة('اشخاص')؛
intعلى واحد=strCol1.قارن('اشخاص')؛
كلفة<<على واحد<< 'ن'؛

الإخراج: 0

عوامل السلسلة

تنطبق هذه العوامل على كائنات السلسلة وليس بالضرورة على السلاسل الحرفية.

+

يربط بين كائنين من عناصر السلسلة ، ويعيد التسلسل.

سلسلة strCol1=سلسلة('الرقص على')؛
سلسلة strCol2=سلسلة(' القمر')؛
سلسلة strCol=strCol1+strCol2؛
كلفة<<ستركول<< 'ن'؛

الإخراج: الرقص على القمر.

==

إرجاع 1 لصحيح ، إذا كانت كائنات السلسلة هي نفسها ؛ وصفر للخطأ ، إذا لم يكن كذلك.

سلسلة strCol1=سلسلة('الرقص على')؛
سلسلة strCol2=سلسلة(' على القمر')؛
منطقية بل=strCol1==strCol2؛
كلفة<<bl<< 'ن'؛

الإخراج: 0

! =

تُرجع 1 إذا كانت كائنات السلسلة غير متطابقة ، وتعيد صفرًا إذا كانت كذلك.

سلسلة strCol1=سلسلة('الرقص على')؛
سلسلة strCol2=سلسلة(' على القمر')؛
منطقية بل=strCol1! =strCol2؛
كلفة<<bl<< 'ن'؛

الإخراج: 1

<

تُرجع 1 ، إذا كان المعامل الأيسر أقل من المعامل الأيمن وفقًا للقاموس ، أو صفرًا إذا لم يكن كذلك.

سلسلة strCol1=سلسلة('الرقص على')؛
سلسلة strCol2=سلسلة(' على القمر')؛
منطقية بل=strCol1<strCol2؛
كلفة<<bl<< 'ن'؛

الإخراج: 0

بالنسبة للأحرف العادية في C ++ ، بترتيب تصاعدي ، تأتي الأرقام قبل الأحرف الكبيرة ، والتي تأتي قبل الأحرف الصغيرة. تأتي شخصية الفضاء قبل الصفر وكلها.

أنواع أحرف السلسلة الرئيسية في C ++

شار

نوع char هو نوع C ++ الأصلي ، وعادةً ما يخزن حرفًا في 8 بت.

char16_t

هذا يخزن شخصية في 16 بت.

char32_t

هذا يخزن شخصية في 32 بت.

wchar_t

char16_t و char32_t هما حرفان عريضان. wchar_t هو حرف عريض خاص بحقوق الملكية ومعرّف بالتنفيذ.

هذه الأنواع تسمى السمات. ومع ذلك ، تشير C ++ إليها تقنيًا على أنها تخصصات السمات. ركزت هذه المقالة على نوع الحرف. يختلف نهج الأنواع الأخرى قليلاً - انظر لاحقًا.

وظائف عضو أخرى في عملية السلسلة

تواقيع وظائف تشغيل السلسلة الأخرى هي:

نوع_الحجم find_first_of(مقدار ثابتالأساسية_السلسلة&صوsize_type pos= 0) مقدار ثابتلا باستثناء؛
نوع_الحجم find_first_of(مقدار ثابتجدول*سوsize_type posوsize_type n) مقدار ثابت؛
نوع_الحجم find_first_of(مقدار ثابتجدول*سوsize_type pos= 0) مقدار ثابت؛
نوع_الحجم find_first_of(الرسم البياني جوsize_type pos= 0) مقدار ثابت؛
نوع_الحجم find_last_of(مقدار ثابتالأساسية_السلسلة&صوsize_type pos=npos) مقدار ثابتلا باستثناء؛
نوع_الحجم find_last_of(مقدار ثابتجدول*سوsize_type posوsize_type n) مقدار ثابت؛
نوع_الحجم find_last_of(مقدار ثابتجدول*سوsize_type pos=npos) مقدار ثابت؛
نوع_الحجم find_last_of(الرسم البياني جوsize_type pos=npos) مقدار ثابت؛
نوع_الحجم find_first_not_of(مقدار ثابتالأساسية_السلسلة&صوsize_type pos= 0) مقدار ثابتلا باستثناء؛
نوع_الحجم find_first_not_of(مقدار ثابتجدول*سوsize_type posوsize_type n) مقدار ثابت؛
نوع_الحجم find_first_not_of(مقدار ثابتجدول*سوsize_type pos= 0) مقدار ثابت؛
نوع_الحجم find_first_not_of(الرسم البياني جوsize_type pos= 0) مقدار ثابت؛
نوع_الحجم find_last_not_of(مقدار ثابتالأساسية_السلسلة&صوsize_type pos=npos) مقدار ثابتلا باستثناء؛
نوع_الحجم find_last_not_of(مقدار ثابتجدول*سوsize_type posوsize_type n) مقدار ثابت؛
نوع_الحجم find_last_not_of(مقدار ثابتجدول*سوsize_type pos=npos) مقدار ثابت؛
نوع_الحجم find_last_not_of(الرسم البياني جوsize_type pos=npos) مقدار ثابت؛

استنتاج

يحتوي C ++ على سلسلة حرفية وكائنات سلسلة. يحتوي كائن السلسلة على مجموعة من الأحرف في تسلسل ، على غرار مجموعة من الأحرف في التسلسل. الفرق بين مجموعة السلسلة والمصفوفة ، هو أن مجموعة السلسلة يمكن أن تنمو في الطول أو تتقلص في الطول. يتم إنشاء كائن سلسلة من فئة سلسلة. كائن سلسلة هو بنية بيانات مع وظائف الأعضاء. يمكن تصنيف وظائف الأعضاء تحت عناوين إنشاء الكائن ، والوصول إلى العناصر ، وسعة السلسلة ، ووظائف عضو السلسلة مع وسيطات المكرر وأنواع الإرجاع ، ومعدلات السلسلة. توجد أيضًا مساواة سلسلة وعوامل علائقية.