Cin.peek() блокируется после запуска stty rawC++

Программы на C++. Форум разработчиков
Anonymous
Cin.peek() блокируется после запуска stty raw

Сообщение Anonymous »

Давайте ограничимся темой, чтобы определить, нажимается ли клавиша ESC или клавиша «Вверх» стандартным C++.
После запуска stty raw в консоли и последующего объединения getchar() и cin.peek() в C++, можно завершить эту простую задачу.
Я обнаружил, что cin.peek() будет быть заблокирован, если вы только нажмете Клавиша ESC. Но просмотр есть просмотр, его НЕ следует блокировать.
Вот код, позволяющий воспроизвести эту проблему. Он может идентифицировать клавиши Up, но ESC

Код: Выделить всё

#include 
#include 

using namespace std;

// ESC: 1b, UP: 1b 5b 41
int esc_or_up() {
auto esc_key = 0x1b, bracket_key = 0x5B, a_key=0x41;

auto buf = cin.rdbuf();
int ch = buf->sbumpc();
if (ch != esc_key)
return ch;

auto debug = [&]() {
static int count = 0;
cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79326578/cin-peek-is-blocked-after-running-stty-raw[/url]

Вернуться в «C++»