Подтвердить что ты не робот

С++ keypress: getch, cin.get?

У меня есть программа Win32, которая работает в цикле. Я хотел бы иметь возможность приостановить эту программу, ожидая нажатия клавиши. Неважно, использую ли я какой-либо ключ или какой-то конкретный ключ, но мне нужно, чтобы программа зависала, пока я не нажму что-нибудь.

Мне интересно, какую команду я должен использовать. Я работаю с Visual С++, и компилятор не распознает ни одну из следующих команд:

cin.get()

std::cin.get()

getch()

Я относительно новичок в С++. Я понимаю, что в консольном приложении это довольно простое действие (cin.get), но это может быть сложнее в Win32. Любое простое решение или обходное решение будут оценены. Программа предназначена для использования в одном научном эксперименте, поэтому на данный момент я не суетился, если решение немного бот (!)

Извините, если я пропустил какую-либо важную информацию из моего вопроса.

4b9b3361

Ответ 1

Вы не должны использовать ни того, ни другого.

Вы должны использовать

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

Здесь документация

Ответ 2

Try

#include <iostream>

using namespace std;

char temp;
cin >> temp;

Ответ 3

Предполагая, что вы ищете альтернативу для getch (которая не отображает эхо на экран).

Если вы используете окна и визуальную студию, попробуйте использовать _getch. Вот ссылка на него http://msdn.microsoft.com/en-us/library/078sfkak(v=VS.100).aspx

Ответ 4

Вы должны #include <iostream> и использовать std::cin.get();

Я думаю, что getch() - это функция C, но поскольку вы используете С++, более подходящим будет cin.

Ответ 5

Пример:

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

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

_getch() является С++ эквивалентным C getch()

Ответ 6

HWND hwnd = ::GetConsoleWindow();

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

Предположим, что это не лучший способ, но он решил мою проблему. Замените VK_SPACE на любое другое значение, которое вам нравится. И это не переносимо.