פורסם 2009 ביוני 416 שנים חברים, האם יש פונקציה ב++C שמקבלת מחרוזת ומפרקת אותה למילים לפי סימן כלשהו?יש לי קלט שאני אמור לקבל מהצורה הבאה:<Type> <name> <num> ...וכך הלאה. כל מילה מופרדת ע"י רווח ו < >.כל מילה מחזיקה מידע שאני צריך לדעת בשביל לאתחל את האובייקטים שלי - פולימורפיזם.לכן, קודם אני צריך לפרק את המחרוזת ולדעת את כל האינפורמציה ורק אח"כ ליצור דינאמית את האובייקטולשלוח את כל המידע לCTOR.השאלה שלי איך אני יכול לעשות את זה? האם יש פונקציה ב++C שנגיד מחזירה מטריצה שכל שורה בההיא מילה אחרת למשל? או כל סוג של פעולה אחרת?
פורסם 2009 ביוני 516 שנים קודם כל, מה שאתה מחפש נקרא 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 בגוגל ימצא לך עוד הרבה דוגמאות קוד או חבילות.
פורסם 2009 ביוני 516 שנים הנה משהו שחפרתי באינטרנט ונראה לי סביר.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;}
פורסם 2009 ביוני 616 שנים מחבר תודה רבה חברים. כנראה שאממש את זה ידנית. אסור להתעסק עם string, רק עם char *. תודה רבה על העזרה
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.