++C: התנהגות של cin.getline

++C: התנהגות של cin.getline

אני קורא ל-cin.getline אחרי קריאה ל-cin רגיל. ההתנהגות לא ברורה לי - עושה רושם שהערך נשאב מה-istream עוד לפני שאני מספיק להזין אותו. דוגמה:
int num; char* string1; char string2; cin>>num; cin.getline(string1, 10); cin.getline(string2, 10);​
בהרצה, אחרי שאני מזין את ערך האינטג'ר, הערך הבא שאני מזין נכנס ל-string2 ואילו string1 נשאר ריק. מישהו יכול להסביר?
 
ובדיעבד, טעות יותר עקרונית

char string1[10]; char string2[10];​
אבל זה עדיין לא קשור לסוגיה שהעליתי. אשמח לקבל תשובה/הסבר.
 

DNile

New member
בעיה ידועה בעירוב >> עם getline.

מה שקורה זה שכשאתה מבצע:
cin >> number;​
ה\n שהוקלד בסוף נשאר בתוך הstream. כשאתה קורא לgetline, הוא מחפש את התו \n הראשון שבstream, ובאופן פלאי, הוא מוצא את ה\n שהוקלד אחרי שהכנסת את המספר. הפתרון הוא לקרוא לcin.ignore לפני שאתה קורא לgetline כדי להפטר מה\n העודף הזה.
 
למעלה