gpt4 book ai didi

c++ - 使用 cin 检查用户整数输入会产生无限循环

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:51:49 26 4
gpt4 key购买 nike

如果用户未在输入提示中输入任何内容,并且他们输入的内容为零或更少,我将尝试打印一条错误消息。

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...." 的无限循环。在用户输入非整数值(如字符)后。我该如何解决这个问题?

最佳答案

你忘记了 [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?

关于c++ - 使用 cin 检查用户整数输入会产生无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15180298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com