【发布时间】:2013-03-02 22:42:19
【问题描述】:
如果用户没有在输入提示中输入任何内容,并且他们输入的内容为零或更少,我将尝试打印错误消息。
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...." 的无限循环,例如一个人物。我该如何解决这个问题?
【问题讨论】:
-
问题是,如果需要,我不确定应该将 clear() 放在哪里。
-
您需要在输入进入错误状态后调用它们。在您的代码中,输出在逻辑上是最正确的。
-
@chris 谢谢克里斯,你的评论应该是一个答案,帮助并使它工作!
-
答案提供的时间和我差不多 :) 我想要非常简短地解释你为什么把它放在那里。
标签: c++ error-handling user-input cin