行if(!(cin.good()))cout<< “没有字母”<< ENDL;如果我输入字母,我会不断重复不间断,但其他工作正常。不知道为什么。
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <cstdio>
using namespace std;
int main()
{
int x;
cout << "Please enter a number\n";
srand(time(0));
int y = rand();
while (x != y)
{
cin >> x;
if (!(cin.good()))
cout << "No letters" << endl;
else if (x < y)
cout << "Go higher" << endl;
else if (x > y)
cout << "Go lower" << endl;
else
cout << "You win!!" << endl;
}
cin.get();
getchar();
return 0;
}
答案 0 :(得分:4)
您的无效输入位于输入缓冲区中。如果你只是想全力以赴,你可以这样做:
...
if (!cin.good())
{
cout << "No letters" << endl;
cin.clear(); // clear error flags
cin.sync(); // synchronize stream with input source
}
...
答案 1 :(得分:1)
您需要消耗错误的输入,因为它只会保留在缓冲区中。