我正在尝试从终端读取一个整数。这是我的代码:
int readNumber()
{
int x;
std::cin >> x;
while(std::cin.fail())
{
std::cin.clear();
std::cin.ignore();
std::cout << "Bad entry. Enter a NUMBER: ";
std::cin >> x;
}
return x;
}
每当我运行这段代码时,我会遇到以下问题:
Type in the number for the newsgroup that shall be deleted:
joöä
Bad entry. Enter a NUMBER: Bad entry. Enter a NUMBER: Bad entry. Enter a NUMBER: Bad entry. Enter a NUMBER: Bad entry. Enter a NUMBER: Bad entry. Enter a NUMBER: 8
为什么会多次输出"bad entry"? 如果我去掉
std::cin.clear();
或者std::cin.ignore();
,程序就会一直输出Enter a NUMBER: Bad entry.
有人可以解释一下这是为什么吗?