while (guess<1234 or guess>9876)
{
cout << "Invalid" << endl;
cin >> guess;
}
输出垃圾邮件无效,&#39;没有时间进入新的猜测。我怎么能让它暂停?
答案 0 :(得分:0)
您需要过滤数值(请参阅How can I get std::cin to skip invalid input characters? ):
#include <iostream>
#include <limits>
using namespace std;
int main() {
int guess;
while (guess<1234 or guess>9876) {
cout << "Invalid" << guess << endl;
cin >> guess;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
}
答案 1 :(得分:0)
由于您之前尝试读取“错误”数据,cin
似乎处于不良状态,例如尝试将“hello”读入int
。如果它处于不良状态,你应该清除它:
while (guess<1234 or guess>9876)
{
cout << "Invalid" << endl;
if (!cin) {
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
cin >> guess;
}
您还需要为<limits>
添加std::numeric_limits
。