قراءة بعض الأعداد الصحيحة ثم سطر من النص في C ++
سؤال
وأنا أقرأ مساهمة في برنامج C ++. أولا بعض الأعداد الصحيحة، ثم سلسلة. عندما أحاول قراءة السلسلة مع getline(cin,stringname);
، فإنه لا يقرأ الخط الذي يكتب المستخدم: بدلا من ذلك، يمكنني الحصول على سطر فارغ، من عند ضغط المستخدم أدخل بعد كتابة الأعداد الصحيحة
cin>>track.day; //Int
cin>>track.seriesday; //Int
getline(cin,track.comment); //String
وكيف يمكنني مسح cin
(لا تعمل cin.clear()
) بحيث السلسلة لم تملأ نفسها مع مفتاح "دخول"؟
وانها المدخلات العادي يتلقى، لا شيء خاص في الجزء العلوي من رمز،
كان لي مشكلة مثل هذه ولكن نسيت الحل
ولست بحاجة لمسح cin
نوعا ذلك لن يحصل شغل في السلسلة مع "دخول" المفتاح.
المحلول
وأعتقد أن CIN الخاص بك من [إينتس] لا يقرأ سطر جديد قبل الحكم. CIN يتخطى الرائدة بيضاء وتوقف قراءة عدد عندما يواجه عدم أرقام، بما في ذلك المسافات.
وهكذا:
std::cin >> num1;
std::cin >> num2;
std::cin.ignore(INT_MAX, '\n'); // ignore the new line which follows num2
std::getline(std::cin, sentence);
وقد عمل لك
لا تنتمي إلى StackOverflow