不能忽略回车键

时间:2017-05-09 13:34:11

标签: c++ visual-c++

这是我的代码

当我按Enter键为n插入一个值时,它立即移动到下一个循环 没有按第二次 我试着用cin.clear(),cin.syns()来清理缓冲区......但它不起作用

任何人都知道为什么以及如何解决它

感谢

int main() {
    bool isNotExit=true;
    do {
        isNotExit=menu();
    } while( isNotExit );
    return 0;
}

bool menu() {
    int n;
    do {
        cout<<"n = "<<endl;
        cin>>n;cin.ignore(1);
    } while( n!=1&&n!=2&&n!=3 );
    switch( n ) {
    case 1:
    {
        cout<<"Press enter to continue"<<endl;
        bool enter=false;
        do {
            if( GetAsyncKeyState(VK_RETURN)&0x8000 ) enter=true;
        } while( enter==false );
        return true;
    }
    break;
    case 2:
    {

        return true;
    }
    break;
    case 3:
    {
        return false;
    }
    break;
    }
}

1 个答案:

答案 0 :(得分:-1)

它发生的原因是系统特定的。我无法在计算机上重现这个问题,但我想这就是这一行:

if( GetAsyncKeyState(VK_RETURN)&0x8000 ) enter=true;

在系统意识到你已经发布'Enter'进入n之前,它已经在上面指定的行中检查了它。试试这个:

case 1:
{
    sleep(1); // Proof of concept
    cout<<"Press enter to continue"<<endl;
    bool enter=false;
    do {
        if( GetAsyncKeyState(VK_RETURN)&0x8000 ) enter=true;
    } while( enter==false );
    return true;
}