C ++ cout不断重复

时间:2012-04-18 23:56:24

标签: c++ repeat

行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;

}

2 个答案:

答案 0 :(得分:4)

您的无效输入位于输入缓冲区中。如果你只是想全力以赴,你可以这样做:

...
if (!cin.good()) 
{
    cout << "No letters" << endl;
    cin.clear(); // clear error flags
    cin.sync();  // synchronize stream with input source
}
...

答案 1 :(得分:1)

您需要消耗错误的输入,因为它只会保留在缓冲区中。