Здравствуйте. Команда getch() возвращает номер нажатой клавиши по таблице ASCII. Русские буквы находятся под номерами в диапазонах 127-176 и 223-242, включительно. Код стрелок состоит из двух чисел, где первое - всегда 224, которое также обозначает букву 'р' и в итоге следующий код работать не будет, т.к. если была введена буква 'р', то программа будет ждать ввод следующей буквы.
int ch = getch();
if (ch == 224) {
int arrow = getch();
switch (arrow) {
... // обработка стрелок
}
}
Решить проблему можно проверив введен ли уже второй символ, но cin.get() и cin.peek() не работают, так как, как я понял, из буффера cin символ удаляется после использования getch(). Как это решить? Буду рад и решениям, реализованным не через getch(), но желательно никакого winapi.