好吧我对C ++很陌生,我很喜欢C#而且我真的不知道我的代码有什么问题。我只想弄清楚如何检查用户的输入是整数还是字符串。
但是当我输入'a'或其他字符串时,while循环永远不会结束。
#include <iostream>
using namespace std;
int main ()
{
int number;
goto skip;
do
{
cout << "Wrong input. Try again.";
skip:
cout << "Number: ";
cin >> number;
}
while (!cin);
cout << "Correct input.";
system("PAUSE");
}
答案 0 :(得分:4)
一旦您的流进入故障模式,它将保持故障模式,直到您clear()
其状态位。但是,仅仅清除这些位将无济于事,因为违规字符将保留在流中。在重试之前,您很可能想要忽略整行:
while (!(std::cout << "Number: " && std::cin >> number)) {
std::cout << "Wrong input. Try again.\n";
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
std::cout << "Correct input.\n";
std::cin.ignore();