עבור לתוכן

איך להשוות בין מחרוזות שאורכן מוגבל ב-C++?

Featured Replies

פורסם

שלום,

אני צריך עזרה קטנה:

יצרתי קובץ input.txt שהתוכנית שלי קוראת נתונים מתוכו.

זה תוכן הקובץ:

abba tr567 noilk abba abba rtty

nb,b vi7o cp0o9 vi70 vi70

בהנחה שאורך כל מחרוזת קטן מ-100 תווים (כולל ה- '\0' בסוף המחרוזת), איך אפשר להשוות בין המחרוזות? אני מכיר את הפקודה strcmp אבל הבעיה היא שאני לא יכול להשתמש ב- cin.getline מכיוון שאני מוגבל באורך התווים שלי במחרוזת. גודל השורה לא מוגדר, כלומר אין סופי, אז איך אני יכול להשוות בין (לדוגמא) abba ל-abba בשורה הראשונה בלי לחרוג מגודל המחרוזת ועד \n ?

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

תודה

פורסם

לא בדיוק הבנתי מה הבעיה אבל אתה יכול לנסות: תקרא את השורה לתוך std::string line. אחרי זה תריץ לולא כל עוד line.find(" ") שונה מ npos נראה לי, אז אתה מחלק את ה LINE לתוך מחרוזת חדשה (אם line.substr()). ככה היהיה לך M מחרוזות (M-מספר המחרוזות בשורה הראשונה), ואז תריץ לולא שמשווא ביניהם.

אם תסביר שוב אולי אוכל לעזור יותר.

פורסם
  • מחבר

מה שאני רוצה להגיד הוא ש-cin.getline עד כמה שאני יודע, קולטת שורה שלמה עד סופה, אבל איך אפשר לקלוט שורה שלמה עד הסוף אם יש לי מילה אחת בעלת 101 תווים והמקסימום תווים פר סטרינג הוא 100? אז חשבתי אולי להשתמש ב- cin.get אבל איך עושים את זה על 3 או 4 שורות? אני די מבולבל....

לגבי מה שאמרת על std::string line, לא למדתי עדיין את הפקודה הזאת... אולי הדרך הטובה ביותר היא להכניס כל מחרוזת שאני קולט ב-cin.get לתוך מערך ואז להשוות אותו למערך אחר עם מחרוזת אחרת?

פורסם

תבדוק את כל הפרמטרים של GETLINE.

פורסם

לא קראתי את כל מה שאמרת, אבל בקומפיילרים מסויימים יש את strncmp או strcmp_s אשר יכולות לקבל גודל מקסימלי של מחרוזת.

ארכיון

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

דיונים חדשים