所以这是我到目前为止的代码。我尝试了一些类似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()
函数手动清除该标志。