Эквивалент Windows getch () для сбоев Mac / Linux

Я использую getch() и мое приложение падает мгновенно. В том числе при выполнении:

int main()
{
    getch();
}

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

мне сказали использовать std::cin.get(), но я бы хотел, чтобы приложение выходило при нажатии клавиши, а не когда пользователь набрал букву или номер, а затем нажмите enter, чтобы выйти.

Is есть какая-то функция для этого? Код должен работать под Mac (my os) и Windows.


связывание / компиляция не является вопрос; включить <curses.h> и -lcurses в XCode, в то время как Windows использует <conio.h>.

4 ответов


вы заглянули в <curses.h> видел, что


вы не показали

#include <stdio.h>

или

#include <curses.h>

или аналогичные линии. Вы уверены, что связываете с библиотекой, которая включает в себя getch()?


используйте cin.функция get () например:

#include <iostream>

using namespace std;

int main()
{
  char input = cin.get();

  cout << "You Pressed: " << input;
}

программа будет ждать, пока вы нажмете клавишу.

Как только вы имеете, ключ вы отжали были бы напечатаны к экрану.


на getch функция недоступна в Unix-подобных системах, но вы можете заменить ее консольными командами через компилятор с помощью