2017-05-09 56 views
-2

這是我的代碼不能忽視回車鍵

當我按下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

原因它發生的是系統特定的。我無法重現我的電腦上的問題,但我想這是所有關於這一行:

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; 
} 
+0

你爲什麼低估了我的答案?它錯了嗎? – tna0y

+1

問題是錯的,只是讓他一個人解決他的問題,他不明白,值得幫助 – Drako

+1

感謝您的答案,但我沒有downvote你,我甚至不會從昨天登錄,那是錯的 –