פירוק מחרוזת לתת-מחרוזות לפי סימן מוגדר. - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

פירוק מחרוזת לתת-מחרוזות לפי סימן מוגדר.


pain_killer12

Recommended Posts

חברים, האם יש פונקציה ב++C שמקבלת מחרוזת ומפרקת אותה למילים לפי סימן כלשהו?

יש לי קלט שאני אמור לקבל מהצורה הבאה:

<Type> <name> <num> ...

וכך הלאה. כל מילה מופרדת ע"י רווח ו < >.

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

לכן, קודם אני צריך לפרק את המחרוזת ולדעת את כל האינפורמציה ורק אח"כ ליצור דינאמית את האובייקט

ולשלוח את כל המידע לCTOR.

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

היא מילה אחרת למשל? או כל סוג של פעולה אחרת?

קישור לתוכן
שתף באתרים אחרים

קודם כל, מה שאתה מחפש נקרא Tokenizer.

אין פונקציה מובנית שעושה בדיוק מה שאתה רוצה בשפה. קיימת פונקציה שם strtok שתעשה לך חלק מהעבודה.

http://www.cppreference.com/wiki/c/string/strtok

שים לב שזו פונקציה שעובדת על מחרוזות של C, ושהיא משנה לך את המחרוזת.

אופציה שנייה היא לממש את זה ידנית לחלוטין, באמצעות חיפוש של הרווחים והפרדה לתתי מחרוזות. יש כל מיני דוגמאות ברשת, כמו כאן:

http://www.oopweb.com/CPP/Documents/CPPHOWTO/Volume/C++Programming-HOWTO-7.html

חיפוש של C++ Tokenizer בגוגל ימצא לך עוד הרבה דוגמאות קוד או חבילות.

קישור לתוכן
שתף באתרים אחרים

הנה משהו שחפרתי באינטרנט ונראה לי סביר.


int main()
{
std::string token, text("Here:is:some:text");
std::istringstream iss(text);
while ( getline(iss, token, ':') )
{
std::cout << token << std::endl;
}
return 0;
}

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...