כיצד לפצל מחרוזת ב- C ++

How Split String C



עבודה עם נתוני מחרוזת היא חלק חיוני בכל שפת תכנות. לפעמים עלינו לפצל את נתוני המחרוזת לצורכי תכנות. הפונקציה split () קיימת בשפות תכנות רבות כדי לחלק את המחרוזת למספר חלקים. אין פונקציית פיצול () מובנית ב- C ++ לפיצול מחרוזת אך קיימות מספר דרכים רבות ב- C ++ לביצוע אותה משימה, כגון שימוש getline () פוּנקצִיָה, strtok () פונקציה, באמצעות למצוא() ו לִמְחוֹק() פונקציות וכו 'השימושים בפונקציות אלה לפיצול מחרוזות ב- C ++ הוסברו במדריך זה.

תְנַאִי מוּקדָם

לפני בדיקת הדוגמאות של הדרכה זו, עליך לבדוק אם מהדר g ++ מותקן במערכת או לא. אם אתה משתמש ב- Visual Studio Code, התקן את התוספים הדרושים כדי לאסוף את קוד המקור C ++ ליצירת קוד ההפעלה. כאן, היישום Visual Studio Code שימש לעריכה וביצוע קוד C ++.







פיצול מחרוזת באמצעות הפונקציה getline ()

הפונקציה getline () משמשת לקריאת תווים ממחרוזת או מתוכן קובץ עד שנמצא מפריד או מפריד מסויים ואחסון כל מחרוזת ניתוח ב משתנה מחרוזת אחר. הפונקציה תמשיך במשימה עד לניתוח כל התוכן של המחרוזת או הקובץ. התחביר של פונקציה זו ניתן להלן.



תחביר:



istream&getline(istream&הוא, מחרוזת&str,לְהַשְׁחִירתוחם);

כאן, הפרמטר הראשון, isstream, הוא האובייקט שממנו יופקו התווים. הפרמטר השני הוא משתנה מחרוזת שיאחסן את הערך שחולץ. הפרמטר השלישי משמש להגדרת המפריד שישמש לחילוץ המחרוזת.





צור קובץ C ++ עם הקוד הבא כדי לפצל מחרוזת המבוססת על תוחם הרווח באמצעות getline () פוּנקצִיָה. ערך מחרוזת של מספר מילים הוקצה למשתנה, וחלל שימש כמפריד. הוכרז משתנה וקטורי לאחסון המילים שחולצו. לאחר מכן, לולאת 'for' השתמשה להדפסת כל ערך ממערך הווקטורים.

// כלול ספריות נחוצות
#לִכלוֹל
#לִכלוֹל
#לִכלוֹל
#לִכלוֹל

intרָאשִׁי()
{
// הגדר נתוני מחרוזות שיפוצלו
שעה (ות::חוּטstrData= 'למד תכנות C ++';
// הגדר נתוני תוכן שיעבדו כמפריד
קבוע לְהַשְׁחִירמפריד= '';
// הגדר את משתנה המערך הדינמי של מחרוזות
שעה (ות::וֶקטוֹרoutputArray;
// בנה זרם מהמחרוזת
שעה (ות::מחרוזת זרםstreamData(strData);
/ *
הצהיר על משתנה מחרוזת שישמש
לאחסן נתונים לאחר הפיצול
* /

שעה (ות::חוּטשעות;
/ *
הלולאה תחזור על הנתונים המפוצלים ו-
הכנס את הנתונים למערך
* /

בזמן (שעה (ות::getline(streamData, val, מפריד)) {
outputArray.התנגדות(שעות);
}
// הדפס את הנתונים המפוצלים
שעה (ות::עֲלוּת << 'המחרוזת המקורית היא:' <<strData<<שעה (ות::endl;
// קרא את המערך והדפס את הנתונים המפוצלים
שעה (ות::עֲלוּת << ' nהערכים לאחר פיצול המחרוזת על בסיס שטח: ' <<שעה (ות::endl;
ל (אוטומטי &שעות:outputArray) {
שעה (ות::עֲלוּת <<שעות<<שעה (ות::endl;
}
לַחֲזוֹר 0;
}

תְפוּקָה:



הפלט הבא יופיע לאחר ביצוע הקוד לעיל.

פיצול מחרוזת באמצעות הפונקציה strtok ()

ניתן להשתמש בפונקציית strtok () לפיצול מחרוזת על ידי סמל החלק של המחרוזת המבוסס על מפריד. הוא מחזיר מצביע לאסימון הבא אם הוא קיים; אחרת, הוא מחזיר ערך NULL. ה string.h נדרש קובץ כותרת בכדי להשתמש בפונקציה זו. לולאה תדרוש קריאה של כל הערכים המפוצלים מהמחרוזת. הארגומנט הראשון מכיל את ערך המחרוזת שינותח, והארגומנט השני מכיל את המפריד שישמש ליצירת האסימון. התחביר של פונקציה זו ניתן להלן.

תחביר:

לְהַשְׁחִיר * סטרטוק ( לְהַשְׁחִיר *str,קבוע לְהַשְׁחִיר *תוחמים);

צור קובץ C ++ עם הקוד הבא כדי לפצל מחרוזת באמצעות הפונקציה strtok (). מערך תווים מוגדר בקוד המכיל נקודתיים (':') כמפריד. לאחר מכן, ה strtok () פונקציה נקראת עם ערך המחרוזת והמפריד כדי ליצור את האסימון הראשון. ה ' בזמן 'לולאה מוגדרת ליצירת האסימונים האחרים וערכי האסימון עד ל ריק ערך נמצא.

// כלול ספריות נחוצות
#לִכלוֹל
#לִכלוֹל

intרָאשִׁי()
{
// הכריז על מערך של תווים
לְהַשְׁחִירstrArray[] = 'מהראב הוסיין: איש מקצוע IT: [מוגן בדוא'ל]: +8801726783423';
// החזר את ערך האסימון הראשון בהתבסס על ':'
לְהַשְׁחִיר *tokenValue= סטרטוק(strArray,':');
// אתחל את משתנה הנגד
intדֶלְפֵּק= 1;
/ *
חזור על הלולאה כדי להדפיס את ערך האסימון
ולפצל את נתוני המחרוזת הנותרים כדי לקבל
ערך האסימון הבא
* /

בזמן (tokenValue!= ריק)
{
אם(דֶלְפֵּק== 1)
printf('שם: %s n', tokenValue);
אַחֵר אם(דֶלְפֵּק== 2)
printf('עיסוק: %s n', tokenValue);
אַחֵר אם(דֶלְפֵּק== 3)
printf('דוא'ל: %s n', tokenValue);
אַחֵר
printf('מספר נייד: %s n', tokenValue);
tokenValue= סטרטוק(ריק,':');
דֶלְפֵּק++;
}
לַחֲזוֹר 0;
}

תְפוּקָה:

הפלט הבא יופיע לאחר ביצוע הקוד לעיל.

פיצול מחרוזת באמצעות פונקציות Find () ומחיקה ()

ניתן לפצל את המחרוזת ב- C ++ באמצעות פונקציות Find () ומחיקה (). צור קובץ C ++ עם הקוד הבא כדי לבדוק את השימושים בפונקציות find () ומחק () כדי לפצל ערך מחרוזת המבוסס על מפריד מסוים. ערך האסימון נוצר על ידי מציאת מיקום התוחם באמצעות הפונקציה find (), וערך האסימון יישמר לאחר הסרת המפריד באמצעות הפונקציה מחק (). משימה זו תחזור על עצמה עד לניתוח כל התוכן של המחרוזת. לאחר מכן, הערכים של מערך הווקטורים יודפסו.

// כלול ספריות נחוצות
#לִכלוֹל
#לִכלוֹל
#לִכלוֹל

intרָאשִׁי(){
// הגדר את המחרוזת
שעה (ות::חוּטstringData= 'בנגלדש ויפן וגרמניה וברזיל';
// הגדר את המפריד
שעה (ות::חוּטמפריד= 'ו';
// הכריז על המשתנה הווקטורי
שעה (ות::וֶקטוֹרמדינה{};
// הכריז על משתנה שלם
intעמדה;
// הכריז על משתנה מחרוזת
שעה (ות::חוּטoutstr, אסימון;

/ *
פיצול המחרוזת באמצעות פונקציית substr ()
והוספת המילה המפוצלת לתוך הווקטור
* /

בזמן ((עמדה=stringData.למצוא(מפריד)) !=שעה (ות::חוּט::npos) {
אֲסִימוֹן=stringData.substr(0, עמדה);
// הסר את החלל הנוסף מקדמת המחרוזת המפוצלת
מדינה.התנגדות(אֲסִימוֹן.לִמְחוֹק(0, אסימון.מוצא_ראשון_לא('')));
stringData.לִמְחוֹק(0, עמדה+מפריד.אורך());
}
// הדפס את כל המילה המפוצלת למעט המילה האחרונה
ל (קבוע אוטומטי &outstr:מדינה) {
שעה (ות::עֲלוּת <<outstr<<שעה (ות::endl;
}
// הדפס את המילה האחרונה המפוצלת
שעה (ות::עֲלוּת <<stringData.לִמְחוֹק(0, stringData.מוצא_ראשון_לא('')) <<שעה (ות::endl;
לַחֲזוֹר 0;
}

תְפוּקָה:

הפלט הבא יופיע לאחר ביצוע הקוד לעיל.

סיכום

שלוש דרכים שונות לפצל מחרוזת ב- C ++ הוסברו במדריך זה באמצעות דוגמאות פשוטות שיעזרו למשתמשי הפיתון החדשים לבצע את פעולת הפיצול בקלות ב- C ++.