如何在我的代码中修复无穷循环?我认为它跳过了第二个CIN,因此它一直在循环

How to fix the infinity loop in my code? I think it skips the second cin so it keeps looping

本文关键字:循环 过了 第二个 CIN 一直 代码 我的      更新时间:2023-10-16

如果我的输入不是int,它将给出一个无限的循环,我认为它跳过了第二个CIN,但我不知道该如何修复。

cout << "Number of days : ";
int days;
cin >> days;
while(!cin){
    cout << "Invalid";
    cin >> days;
}

operator>>无法解析输入时,它将流置于错误状态,您需要在可以再次从流中阅读之前,需要明确清除,例如:

cout << "Number of days : ";
int days;
while (!(cin >> days)) {
    cin.clear();
    cin.ignore(numeric_limits<streamsize>::max(), 'n');
    cout << "Invalid";
}