为什么我得到一个无限循环时验证我的用户输入

Why am I getting an Infinite loop when validating my user input?

本文关键字:无限循环 验证 我的 输入 用户 一个 为什么      更新时间:2023-10-16

我正在验证用户输入。如果用户输入的不是整数,那么它应该留在While循环中。但是,当我给程序一个"w"时,例如,程序只是无休止地打印"请输入整数",我不得不停止程序。

int MAns1 = 0
while (!(cin >> MAns1))
{
    cout << "nPlease Enter An Integer: ";
    cin.clear();
}

因为您应该测试(cin >> MAns1),而不是!(cin >> MAns1)。我想这样做:

#include<iostream>
using std::cin;
using std::cout;
int main() { 
    int MAns1 = 0;
    for (;;)
    {
        cout << "nPlease Enter An Integer: ";
        cin >> MAnsi;
        // did the last read succeed?
        if(!cin) {
          // it did *not* succeed.
          break;
        }
    }
}