所以这是我到目前为止的代码。我尝试了一些类似isDigit(nPlay)和!cin的事情。也许我需要一个不同的循环。当我做任何一个时,如果我输入的数字大于4,它的行为也应该像假设的那样。但是,当我输入字母或单词时,它将陷入无限循环。

int view::numPlayer() {
int nPlay = 0;
while( nPlay == 0 ) {
    cout << "How many players will there be?" << endl;
    cin >> nPlay;
    if(nPlay > 4 || nPlay < 2 || !cin) {
        nPlay = 0;
    }
    system("CLS");
}
return nPlay;

最佳答案

这是因为failbit上的std::cin标志(设置后)不会自动清除。这意味着!cin将始终为true。您必须使用 clear() 函数手动清除该标志。

10-08 01:24