Я хотел бы использовать пользовательский ввод со стрелками, чтобы пользователю не приходилось нажимать ввод каждый раз после нажатия стрелки. Поэтому я решил использовать _getch(), который якобы делает именно это. Это часть библиотеки conio.h, которую я импортировал. Однако в моем случае _getch() также требует, чтобы пользователь нажал клавишу ввода, и не сразу регистрирует пользовательский ввод, как следовало бы. Как я могу это исправить? (Я работаю на окнах)
#include<iostream>
#include <conio.h>
using namespace std;
int main() {
int p = _getch();
cout<<p;
return 0;
}
Например, в приведенном выше коде вместо того, чтобы напрямую печатать значение p после получения ввода в консоли, он по-прежнему ожидает нажатия клавиши ввода.
_getch()
не линейно-ориентированный, но вывод может быть. В C я бы проверил это с помощьюprintf("%d\n", p);
, возможно, также сбросить вывод. И, как говорит @Lundin, навигационные и функциональные клавиши возвращают два значения: если задано escape-значение, вы возвращаетесь к другому. - person Weather Vane   schedule 18.01.2021_getch()
в том, что в отличие отgetchar()
он не линейный (и исходит от клавиатуры, а неSTDIN
). - person Weather Vane   schedule 18.01.2021