كيفية تقسيم السلسلة في C ++

How Split String C



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

المتطلبات المسبقة

قبل التحقق من أمثلة هذا البرنامج التعليمي ، يجب عليك التحقق من تثبيت برنامج التحويل البرمجي g ++ أم لا في النظام. إذا كنت تستخدم Visual Studio Code ، فقم بتثبيت الملحقات الضرورية لتجميع التعليمات البرمجية المصدر لـ C ++ لإنشاء التعليمات البرمجية القابلة للتنفيذ. هنا ، تم استخدام تطبيق Visual Studio Code لتجميع وتنفيذ كود C ++.







انقسام السلسلة باستخدام دالة getline ()

تُستخدم وظيفة getline () لقراءة الأحرف من سلسلة أو محتوى ملف حتى يتم العثور على محدد أو فاصل معين وتخزين كل سلسلة تحليل في متغير سلسلة آخر. ستستمر الوظيفة في المهمة حتى يتم تحليل المحتوى الكامل للسلسلة أو الملف. فيما يلي بناء جملة هذه الوظيفة.



بناء الجملة:



istream&الحصول على خط(istream&هو ، سلسلة&شارعشاردليم)؛

هنا ، المعلمة الأولى ، isstream هو الكائن الذي سيتم استخراج الأحرف منه. المعلمة الثانية هي متغير سلسلة يقوم بتخزين القيمة المستخرجة. يتم استخدام المعلمة الثالثة لتعيين المحدد الذي سيستخدم لاستخراج السلسلة.





قم بإنشاء ملف C ++ بالتعليمة البرمجية التالية لتقسيم سلسلة استنادًا إلى محدد المسافة باستخدام ملحق الحصول على خط() وظيفة. تم تعيين قيمة سلسلة من كلمات متعددة في متغير ، وتم استخدام المسافة كفاصل. تم التصريح عن متغير متجه لتخزين الكلمات المستخرجة. بعد ذلك ، استخدمت الحلقة 'for' لطباعة كل قيمة من مصفوفة المتجهات.

// تضمين المكتبات الضرورية
#يشمل
#يشمل
#يشمل
#يشمل

intالأساسية()
{
// تحديد بيانات السلسلة التي سيتم تقسيمها
ساعات::سلسلةstrData= تعلم برمجة C ++؛
// تحديد البيانات المتضمنة التي ستعمل كمحدد
مقدار ثابت شارفاصل= '؛
// تحديد متغير الصفيف الديناميكي للسلاسل
ساعات::المتجهالإخراج؛
// إنشاء دفق من السلسلة
ساعات::سلسلةدفق البيانات(strData)؛
/ *
قم بتعريف متغير السلسلة الذي سيتم استخدامه
لتخزين البيانات بعد الانقسام
* /

ساعات::سلسلةساعة؛
/ *
ستقوم الحلقة بتكرار البيانات المقسمة و
أدخل البيانات في المصفوفة
* /

في حين (ساعات::الحصول على خط(ستريمداتا ، فال ، فاصل)) {
الإخراجإدفع إلى الخلف(ساعة)؛
}
// طباعة البيانات المقسمة
ساعات::كلفة << 'السلسلة الأصلية هي:' <<strData<<ساعات::endl؛
// اقرأ المصفوفة واطبع البيانات المقسمة
ساعات::كلفة << 'نالقيم بعد تقسيم السلسلة بناءً على المساحة: ' <<ساعات::endl؛
ل (تلقاءي &ساعة:الإخراج) {
ساعات::كلفة <<ساعة<<ساعات::endl؛
}
إرجاع 0؛
}

انتاج:



سيظهر الإخراج التالي بعد تنفيذ الكود أعلاه.

انقسام السلسلة باستخدام دالة strtok ()

يمكن استخدام الدالة strtok () لتقسيم سلسلة عن طريق ترميز جزء السلسلة بناءً على المحدد. تقوم بإرجاع مؤشر إلى الرمز المميز التالي إذا كان موجودًا ؛ وإلا ، تقوم بإرجاع قيمة فارغة. ال سلسلة. h مطلوب ملف رأس لاستخدام هذه الوظيفة. ستتطلب الحلقة قراءة جميع القيم المقسمة من السلسلة. تحتوي الوسيطة الأولى على قيمة السلسلة التي سيتم تحليلها ، بينما تحتوي الوسيطة الثانية على المحدد الذي سيتم استخدامه لإنشاء الرمز المميز. فيما يلي بناء جملة هذه الوظيفة.

بناء الجملة:

شار * strtok ( شار *شارعمقدار ثابت شار *المحددات)؛

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

// تضمين المكتبات الضرورية
#يشمل
#يشمل

intالأساسية()
{
// أعلن عن مجموعة من الشخصيات
شارstrArray[] = 'مهراب حسين: متخصص في تكنولوجيا المعلومات: [البريد الإلكتروني محمي]: +8801726783423'؛
// إرجاع قيمة الرمز المميز الأولى بناءً على ':'
شار *tokenValue= strtok(strArray':')؛
// تهيئة متغير العداد
intعداد= 1؛
/ *
كرر الحلقة لطباعة قيمة الرمز المميز
وتقسيم بيانات السلسلة المتبقية للحصول عليها
قيمة الرمز التالي
* /

في حين (tokenValue!= باطل)
{
لو(عداد== 1)
printf(الاسم:٪ sن'، tokenValue)؛
آخر لو(عداد== 2)
printf(الوظيفة:٪ sن'، tokenValue)؛
آخر لو(عداد== 3)
printf('البريد الإلكتروني:٪ sن'، tokenValue)؛
آخر
printf(رقم الجوال:٪ sن'، tokenValue)؛
tokenValue= strtok(باطلو':')؛
عداد++؛
}
إرجاع 0؛
}

انتاج:

سيظهر الإخراج التالي بعد تنفيذ الكود أعلاه.

قم بتقسيم السلسلة باستخدام الدالتين find () و erase ()

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

// تضمين المكتبات الضرورية
#يشمل
#يشمل
#يشمل

intالأساسية(){
// تحديد السلسلة
ساعات::سلسلةسلسلة البيانات= 'بنجلاديش واليابان وألمانيا والبرازيل'؛
// تحديد الفاصل
ساعات::سلسلةفاصل= 'و'؛
// قم بتعريف متغير المتجه
ساعات::المتجهبلد{}؛
// نعلن متغير عدد صحيح
intموقع؛
// قم بتعريف متغير السلسلة
ساعات::سلسلةoutstr، token؛

/ *
قم بتقسيم السلسلة باستخدام دالة substr ()
وإضافة الكلمة المقسمة إلى المتجه
* /

في حين ((موقع=سلسلة البيانات.تجد(فاصل)) !=ساعات::سلسلة::npos) {
رمز=سلسلة البيانات.الجزء الفرعي(0، موقع)؛
// قم بإزالة المسافة الزائدة من مقدمة السلسلة المقسمة
بلد.إدفع إلى الخلف(رمز.محو(0، رمز.find_first_not_of(')))؛
سلسلة البيانات.محو(0، موقع+فاصل.الطول())؛
}
// طباعة كل الكلمات المقسمة باستثناء الكلمة الأخيرة
ل (مقدار ثابت تلقاءي &خارجي:بلد) {
ساعات::كلفة <<خارجي<<ساعات::endl؛
}
// طباعة آخر كلمة مقسمة
ساعات::كلفة <<سلسلة البيانات.محو(0، سلسلة Data.find_first_not_of(')) <<ساعات::endl؛
إرجاع 0؛
}

انتاج:

سيظهر الإخراج التالي بعد تنفيذ الكود أعلاه.

استنتاج

تم شرح ثلاث طرق مختلفة لتقسيم سلسلة في C ++ في هذا البرنامج التعليمي باستخدام أمثلة بسيطة لمساعدة مستخدمي Python الجدد على إجراء عملية الانقسام بسهولة في C ++.