تحتوي سلسلة C++ على سلسلة فرعية

Thtwy Slslt C Ly Slslt Fr Yt



في C++، لدينا نوع بيانات السلسلة ويمكننا تطبيق وظائف مختلفة للقيام بالمهام المختلفة باستخدام السلاسل. يمكننا التحقق مما إذا كانت السلسلة الفرعية موجودة داخل السلسلة الأصلية. يمكننا أيضًا أن نقول أن 'السلسلة تحتوي على السلسلة الفرعية'. في هذا الدليل، سوف نتعلم التقنيات التي تساعدنا في العثور على 'السلسلة التي تحتوي على السلسلة الفرعية'. تساعدنا الدالتان 'find()' و'strstr()' في القيام بهذه المهمة في برمجة C++.

مثال 1:

إن 'iostream' و'string' هما ملفات الرأس المضمنة هنا حيث يتعين علينا العمل مع السلاسل ونحتاج أيضًا إلى إدخال البيانات أو إخراجها. لذا، يجب علينا تضمين ملفات الرأس هذه هنا. بعد ذلك، نقوم بتضمين 'مساحة الاسم القياسية' بمساعدة الكلمة الأساسية 'استخدام'. لذلك، لا نحتاج إلى وضع هذا 'std' مع جميع الوظائف بشكل منفصل في الكود الخاص بنا. ثم يتم استدعاء الدالة 'main()' هنا.







الآن، نعلن عن السلسلة 'str_1' ونخصص بعض بيانات السلسلة لهذا المتغير. بعد ذلك، نقوم أيضًا بتهيئة متغير آخر يسمى 'str_2' من نوع البيانات 'string' وتعيين 'like' لهذا المتغير 'str_2'. أسفل هذا، نستخدم الكلمة الأساسية 'bool' لإعطاء نتائج صحيحة أو خاطئة. نقوم بتهيئة 'stringHasStr' باستخدام نوع البيانات 'bool' هذا ونستخدم وظيفة 'find()'. يؤدي هذا إلى البحث في 'السلسلة التي تحتوي على السلسلة الفرعية'. 'str_1' هي السلسلة الكاملة و'str_2' هي السلسلة الفرعية.



هنا، نضيف أيضًا الكلمة الأساسية 'npos' التي تُستخدم لإظهار عدم وجود تطابقات في هذه السلسلة. فهو يتحقق مما إذا كانت السلسلة تحتوي على سلسلة فرعية ويخزن النتيجة في المتغير المنطقي 'stringHasStr'.



بعد ذلك، ننتقل نحو الشرط 'if' ونمرر المتغير 'stringHasStr' إلى الشرط 'if' هذا. إذا كانت النتيجة المخزنة في المتغير المنطقي هذا هي 'صحيح'، فسيتم استخدام العبارة بعد شرط 'if' حيث نستخدم 'cout' ونعرض السلسلة الموجودة هنا. ولكن إذا تم تخزين النتيجة 'الخاطئة' في المتغير المنطقي هذا، فسيتم استخدام الجزء الآخر ويعرض أن السلسلة غير موجودة هنا.





الكود 1:

#تشمل
#تشمل <سلسلة>

استخدام اسم للمحطة؛
انت مين ( )
{
سلسلة str_1 = 'أنا أحب لغة البرمجة C++' ;
سلسلة str_2 = 'يحب' ;
bool stringHasStr = str_1.find ( str_2 ) ! = سلسلة::npos;
لو ( stringHasStr ) {
cout << 'نجد السلسلة هنا وهي' << str_2 << نهاية؛
}
آخر {
cout << 'لم يتم العثور على السلسلة' << نهاية؛
}
يعود 0 ;
}



انتاج:

يُظهر هذا الإخراج أن السلسلة تحتوي على السلسلة الفرعية ويعرضها هنا. نحن نتحقق من ذلك باستخدام وظيفة 'find ().'

مثال 2:

نقوم بتضمين ثلاثة ملفات رأسية هنا وهي 'iostream' و'string' و'cstring'. ثم، قم باستدعاء 'main()' بعد وضع 'مساحة الاسم std'. تم الآن الإعلان عن سلسلة 'new_str' وتم تعيين بعض بيانات السلسلة.

بعد ذلك، نقوم بتهيئة متغير ثانٍ من نوع البيانات 'string' يُسمى 'sub_str' ونعطيه القيمة 'جدًا'. ثم نضع 'const char*'. لذا فإن تغيير قيمة المؤشر للإشارة إلى موقع آخر في الذاكرة أمر مستحيل. نعلن عن المتغير 'FindingStr' كمؤشر 'const char*' هنا. نقوم بتهيئتها باستخدام طريقة 'strstr()' ونمرر كلا السلسلتين مع وظيفة 'c_str()' التي تحول السلسلة إلى مصفوفة أحرف تنتهي بقيمة فارغة. تساعد طريقة 'strstr()' هذه في التحقق مما إذا كانت السلسلة 'new_str' تحتوي على السلسلة الفرعية 'sub_str' أم لا. ثم لدينا 'if' التي نضيف فيها 'FindingStr'. إذا وجدت السلسلة الفرعية في النص الأصلي، فسيتم تنفيذ العبارة بعد 'if' حيث نستخدم 'cout'. إذا لم يتم العثور على السلسلة الفرعية، فإنها تتحرك مباشرة نحو الجزء 'آخر' وتطبع النتيجة التي يتم وضعها بعد الجزء 'آخر'.

الكود 2:

#تشمل
#تشمل <سلسلة>
#تشمل

استخدام اسم للمحطة؛
انت مين ( )
{
سلسلة new_str = 'إنها تمطر في الخارج والطقس لطيف للغاية.' ;
سلسلة sub_str = 'جداً' ;
حرف ثابت * FindingStr = strstr ( new_str.c_str ( ) , sub_str.c_str ( ) ) ;
لو ( FindingStr ) {
cout << 'نجد السلسلة والسلسلة هي:' << sub_str << نهاية؛
}
آخر {
cout << 'سلسلة لم يتم العثور' << نهاية؛
}
يعود 0 ;
}

انتاج:

قد نلاحظ أن السلسلة المعطاة تحتوي على السلسلة الفرعية لأنها تعرض العبارة التي أضفناها بعد 'if' وتطبع السلسلة الفرعية هنا. نحن نتحقق من ذلك باستخدام وظيفة 'strstr ()'.

مثال 3:

نقوم بتهيئة متغيرين من السلسلة هنا: 'myNewStr' و'mySubStr'. بعد ذلك، نقوم بتعيين بعض بيانات السلسلة ونعلن عن متغيرين صحيحين: 'posOfStr' و'indexOfStr'.

أدناه، نستخدم حلقة 'while()' ونخصص متغير الوظيفة 'find()' للمتغير 'indexOfStr' داخل حلقة 'while()' هذه. نقوم بتمرير متغيرين إلى وظيفة 'find()' هذه وهما 'mySubStr' و'posOfStr'. بعد ذلك، نضع الكلمة الأساسية 'npos' التي تتحقق من أن نتيجة دالة 'find' لا تساوي 'npos'. بعد ذلك، نستخدم 'cout' الذي يزيد قيمة الفهرس بمقدار واحد ويخزنه في المتغير 'posOfStr'.

الكود 3:

#تشمل
#تشمل <سلسلة>

استخدام اسم للمحطة؛
انت مين ( ) {
سلسلة myNewStr = 'نحن نجد السلسلة هنا' ;
سلسلة mySubStr = 'خيط' ;
إنت posOfStr = 0 ;
int IndexOfStr;
بينما ( ( IndexOfStr = myNewStr.find ( mySubStr، posOfStr ) ) ! = السلسلة::npos ) {
cout << 'السلسلة الفرعية هي' << ''' << mySubStr << ''' << 'وجدت في رقم الفهرس :' << مؤشر << نهاية؛
posOfStr = IndexOfStr + 1 ;
}
يعود 0 ;
}

انتاج:

يوضح هنا أن السلسلة المعطاة تحتوي على السلسلة الفرعية وأن رقم الفهرس لهذه السلسلة هو '19' والذي يتم عرضه أيضًا في هذه النتيجة.

مثال 4:

في هذا الكود، قمنا بتضمين ملف الرأس “bits/stdc++.h”. الآن، لا نحتاج إلى تضمين ملفات رأس أخرى لأنها تحتوي على جميع المكتبات المطلوبة. بعد استدعاء 'main()'، نقوم بتهيئة المتغيرات 'org_str' و'sub_str' من نوع البيانات 'string'. بعد ذلك، نضيف شرط 'if' الذي نستخدم فيه الدالة 'strstr()'. تبحث هذه الوظيفة لمعرفة ما إذا كانت السلسلة المحددة تحتوي على السلسلة الفرعية المطلوبة. ثم نضيف عبارة 'cout' لطباعة أن السلسلة الفرعية موجودة هنا. بعد ذلك، نضع أيضًا الجزء 'آخر' الذي يتم تنفيذه فقط عندما لا يتم استيفاء شرط 'إذا' أو عدم العثور على السلسلة الفرعية في السلسلة.

بعد ذلك، نعلن عن المتغير 'sub_str2' ونخصص بيانات سلسلة هنا. يتم بعد ذلك إدراج الشرط 'if'، ويتم استخدام الدالة 'strstr()'. تبحث هذه الطريقة عما إذا كانت السلسلة المتوفرة تحتوي على السلسلة الفرعية المطلوبة أم لا. تتم بعد ذلك طباعة النتيجة هنا باستخدام الأمر 'cout'. نقوم أيضًا بتضمين قسم 'آخر' الذي يتم تشغيله فقط في حالة عدم استيفاء شرط 'إذا' أو في حالة عدم إمكانية تحديد موقع السلسلة الفرعية في السلسلة.

الكود 4:

#تتضمن
استخدام اسم للمحطة؛
انت مين ( ) {
سلسلة org_str = 'لغة البرمجة C++' ;
سلسلة sub_str = 'برنامج' ;
لو ( strstr ( org_str.c_str ( ) ,sub_str.c_str ( ) ) )
{
cout << 'السلسلة الفرعية هنا هي' << ''' << sub_str << ''' << 'موجود في' << org_str << نهاية؛
}
آخر {
cout << ''السلسلة الفرعية غير موجودة في السلسلة.'' << نهاية؛
}
سلسلة sub_str2 = 'جافا' ;

لو ( strstr ( org_str.c_str ( ) ,sub_str2.c_str ( ) ) )
{
cout << 'السلسلة الفرعية هنا هي' << ''' << sub_str2 << ''' << 'موجود في' << org_str << نهاية؛
}
آخر {
cout << ''السلسلة الفرعية غير موجودة في هذه السلسلة.'' << نهاية؛
}
يعود 0 ;
}

انتاج:

تظهر نتيجة الدالة 'strstr()' الأولى أن السلسلة تحتوي على السلسلة الفرعية، لكن نتيجة الدالة 'strstr()' الثانية تظهر أن السلسلة الفرعية غير موجودة في السلسلة.

خاتمة

يتم فحص مفهوم 'السلسلة التي تحتوي على السلسلة الفرعية' بدقة في هذا الدليل. لقد استكشفنا طريقتين تساعدان في البحث عما إذا كانت 'السلسلة تحتوي على السلسلة الفرعية'. لقد شرحنا وظيفة 'find()' بالإضافة إلى وظائف 'strstr()' التي توفرها لغة C++ هنا في هذا الدليل للقيام بهذه المهمة. نعرض أمثلة فريدة تعلمنا فيها كيفية استخدام هذه الوظائف للتحقق مما إذا كانت 'السلسلة تحتوي على السلسلة الفرعية' فيها.