如果用户没有在输入提示中输入任何内容,并且他们输入的内容为零或更少,我正在尝试打印错误消息。
void checkScoreInputed(int* qaltScores, int i){
while(true){
// cin.clear(); here?
if ((cin >> qaltScores[i]) && (qaltScores > 0)){
// also tried placing cin.clear() here.
break;} else // else is optional
cout << "Please supply a positive number for the score: ";
}
}
我尝试在if语句之前和之后放置cin.ignore()和cin.clear(),但在用户输入非整数值后,我仍然得到cout << "Please supply...."
的无限循环,就像一个角色。我该如何解决这个问题?
答案 0 :(得分:2)
您忘记了<{p>}中的[i]
if ((cin >> qaltScores[i]) && (qaltScores[i] > 0))
^^^
没有它,你正在检查指针的值,而不是你刚读过的数字。
您还需要致电cin.clear()
和cin.ignore()
。
void checkScoreInputed(int* qaltScores, int i) {
while(true) {
if ((cin >> qaltScores[i]) && (qaltScores[i] > 0)){
break;
}
cout << "Please supply a positive number for the score: ";
cin.clear();
cin.ignore(10000,'\n');
}
}
请参阅Why would we call cin.clear() and cin.ignore() after reading input?