консольное приложение — Как обрабатывать события нажатия клавиш в переполнении стека

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

Например, когда нажата стрелка вверх, ранее выполненные команды должны быть показаны пользователю. Я знаю о SDL. Но я думаю, что это не стандартная библиотека, не так ли?

Если есть другая альтернатива, включенная в стандартную библиотеку CPP, пожалуйста, дайте мне знать.

Благодарю.

4

Решение

Вы не найдете ничего в стандартной библиотеке для этого. Это все зависит от платформы. В Windows у вас есть такие функции, как GetAsyncKeyState например, получить состояние клавиши на клавиатуре.

SDL а также SFML оба имеют независимую от платформы обработку событий.

5

Другие решения

То, что вы описываете, это не консольная программа как таковая, а оболочка.
Кроме того, вы не хотите обрабатывать входящие события, вы просто хотите читать из командной строки.

Для этого есть разные способы. Windows имеет ReadConsoleInput.
Более гибкий способ — это использование getline.

int main ()
{
string mystr;
cout << "What's your name? ";
getline (cin, mystr);

return 0;
}

Чтобы заставить вас работать, вы просто должны сохранить предыдущие данные в std::vector<string> или похожие.

Чтобы прочитать необработанный ввод (без эха) из консоли, вы должны использовать _getch ()

1

По вопросам рекламы [email protected]