C++ can';不要忽略回车键

C++ can';不要忽略回车键,c++,visual-c++,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; d

这是我的密码

当我按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;
    }
}
intmain(){
bool isNotExit=true;
做{
isNotExit=菜单();
}while(isNotExit);
返回0;
}
bool菜单(){
int n;
做{

cout发生这种情况的原因是系统特定的。我无法在我的计算机上重现该问题,但我想这一切都与这一行有关:

if( GetAsyncKeyState(VK_RETURN)&0x8000 ) enter=true;
在系统意识到您已释放“回车”以输入
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;
}
案例1:
{
睡眠(1);//概念证明

如果提问者是错的,就让他自己解决问题吧,他不感激,也不应该得到帮助谢谢你的回答,但我没有否决你,我甚至从昨天起就没有登录过,那是不对的,因为我的否决率不到15,我甚至不能否决你