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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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