עבור לתוכן

++C מבנים

Featured Replies

פורסם

זה מה שרשמתי:


struct Man
{
char name[20];
int num;
};

איך אני נגשת בתכנית הראשית לאחד מהדות ע"מ לשנות את ערכו??

ניסתי ע"י מצביע מסוג Man ולעשות Man *m;

m->numוכו' אבל זה לא עובד.

וכםף איך אני קולטת מחרוזת (gets?)??

פורסם

את יכולה להגדיר אובייקט כזה על ה- stack, ככה:

Man m;

או להגדיר אליו מצביע, ולאתחל אותו, ככה:

Man* m = new Man();

.

לקלוט מחרוזת יש די הרבה דרכים, בין השאר scanf (ב- C) ודרך- cin (ב- C++)

פורסם

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

לחילופין, את יכולה לעשות :


Man m;
m.num = 10;

כדי לקלוט מחרוזת בC++ את יכולה להשתמש ב- cin<<str; כאשר STR זה שם המחרוזת שלך.

שיטה זו לא טובה, מאחר שיש בעיות אם הכנסת יותר ממה שהקצאת. במקום זה את יכולה להשתמש ב- cin.getline כדי לקלוט מחרוזת עם הגבלה מסויימת על תווים(את אפילו יכולה להגיד לו באיזה תו לסיים לקלוט - למשל, אם הכנסת 'A' אז הקלט יפסק ומה שנכנס אחריו לא יהייה במחרוזת).

פורסם

Man* m = new Man();

כמעט:

Man* m = new Man;

אם לא נותנים לקונסטרקטור ארגומנטים, אסור לשים סוגריים.

כדי לקלוט מחרוזת בC++ את יכולה להשתמש ב- cin<<str; כאשר STR זה שם המחרוזת שלך.

שיטה זו לא טובה, מאחר שיש בעיות אם הכנסת יותר ממה שהקצאת. במקום זה את יכולה להשתמש ב- cin.getline כדי לקלוט מחרוזת עם הגבלה מסויימת על תווים(את אפילו יכולה להגיד לו באיזה תו לסיים לקלוט - למשל, אם הכנסת 'A' אז הקלט יפסק ומה שנכנס אחריו לא יהייה במחרוזת).

הדרך החכמה וה-C++-ית היא להשתמש ב-string של STL, אבל אני מניח שעדיין לא למדת את זה...

פורסם

כמעט:

Man* m = new Man;

אם לא נותנים לקונסטרקטור ארגומנטים, אסור לשים סוגריים.

בטח שמותר, ואף מקובל:

vector<Customer>().swap( v );

פורסם

זה לא אותו דבר.

במקרה הזה אתה חייב את הסוגריים, כי אתה יוצר משתנה ללא שם.

ארכיון

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

דיונים חדשים