سؤال

وأنا أقرأ مساهمة في برنامج 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);

وقد عمل لك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top