Я пишу пользовательскую консольную программу. И я хочу, чтобы это выглядело как настоящее. Поэтому я хочу связать некоторые действия с событиями нажатия клавиш.
Например, когда нажата стрелка вверх, ранее выполненные команды должны быть показаны пользователю. Я знаю о SDL. Но я думаю, что это не стандартная библиотека, не так ли?
Если есть другая альтернатива, включенная в стандартную библиотеку CPP, пожалуйста, дайте мне знать.
Благодарю.
Вы не найдете ничего в стандартной библиотеке для этого. Это все зависит от платформы. В Windows у вас есть такие функции, как GetAsyncKeyState
например, получить состояние клавиши на клавиатуре.
SDL а также SFML оба имеют независимую от платформы обработку событий.
То, что вы описываете, это не консольная программа как таковая, а оболочка.
Кроме того, вы не хотите обрабатывать входящие события, вы просто хотите читать из командной строки.
Для этого есть разные способы. Windows имеет ReadConsoleInput.
Более гибкий способ — это использование getline.
int main ()
{
string mystr;
cout << "What's your name? ";
getline (cin, mystr);
return 0;
}
Чтобы заставить вас работать, вы просто должны сохранить предыдущие данные в std::vector<string>
или похожие.
Чтобы прочитать необработанный ввод (без эха) из консоли, вы должны использовать _getch ()