簡體   English   中英

std::cin 和 std::getline() 正在超過來自 GetAsyncKeyState() 的輸入

[英]std::cin and std::getline() are overtaking inputs from GetAsyncKeyState()

我對GetAsyncKeyState()std::getline() / std::cin有疑問。

我的程序使用GetAsyncKeyState()檢查按下的鍵。 這工作正常。 但是每當我cingetline之后的變量時,它仍然具有我之前按下的字符。

沒有解決方案有效,例如cin.ignore()cin.flush() :(

bool keyPressed[5]; 
          
int key_ascii_nums[5]= {65, 69, 68, 67, 76};  
for (int i = 0; i < 5; i++){
    if(GetAsyncKeyState(key_ascii_nums[i]) & 0x8000)
        keyPressed[i] = true;
    else 
        keyPressed[i] = false;
}

string str;
getline(cin, str);

str總是以我之前給出的字符開頭。 我怎樣才能刪除它?

我通過使用不同的輸入法解決了這個問題。

將其寫入我使用的布爾數組

switch (toupper(_getch()))
{
    case 'L': 
      // do stuff
      break;
    default:
      break;

}

來自 conio.h

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM