簡體   English   中英

C++ 按鍵:getch,cin.get?

[英]C++ keypress: getch, cin.get?

我有一個循環運行的 Win32 程序。 我希望能夠在等待按鍵時暫停該程序。 無論我使用“任何鍵”還是特定鍵都沒有關系,但我需要讓程序凍結,直到我按下某個鍵。

我想知道我應該使用哪個命令。 我正在使用 Visual C++,編譯器無法識別以下任何命令:

cin.get()

std::cin.get()

getch()

我對 C++ 比較陌生。 我知道在控制台應用程序中這是一個相當簡單的操作(cin.get),但在 Win32 中可能會更加困難。 任何簡單的解決方案或解決方法將不勝感激。 該程序是為單個科學實驗定制的,所以現在我不會擔心解決方案有點拙劣(!)

如果我錯過了我的問題中的任何重要信息,我們深表歉意。

你不應該使用。

你應該使用

#include <iostream>
...
int main()
{
   ... 
   std::cin.ignore(); //why read something if you need to ignore it? :)
}'

這是文檔

例子:

#include <iostream>
#include <conio.h>

int main()
{
  std::cout << "Press any key to continue . . ." << std::endl;
  _getch(); // wait for keypress
}

_getch()是 C++ 等價於 C getch()

嘗試

#include <iostream>

using namespace std;

char temp;
cin >> temp;

假設您正在尋找 getch 的替代品(它不會在屏幕上回顯)。

如果您使用的是 windows 和 Visual Studio,請嘗試使用 _getch。 這是它的鏈接http://msdn.microsoft.com/en-us/library/078sfkak(v=VS.100).aspx

您應該#include <iostream>並使用std::cin.get();

我認為getch()是 C function,但既然你使用的是 C++,那么cin會更合適。

HWND hwnd = ::GetConsoleWindow();

while (!((::GetForegroundWindow() == hwnd) &&
        ((::GetKeyState(VK_SPACE) & 0x8000) != 0)))
    ::Sleep(0);

假設這不是最好的方法,但它解決了我的問題。 將 VK_SPACE 替換為您喜歡的任何其他值。 而且它不是便攜式的。

暫無
暫無

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

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