Cin.peek() wird nach der Ausführung von stty raw blockiert

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Cin.peek() wird nach der Ausführung von stty raw blockiert

by Guest » 03 Jan 2025, 14:19

Lassen Sie uns das Thema einschränken, um zu bestimmen, ob eine ESC- oder Auf-Taste von Standard-C++ gedrückt wird.
Nach dem Ausführen von stty raw in der Konsole und dem anschließenden Kombinieren von getchar() und cin.peek() in C++ sollte es in Ordnung sein, diese einfache Aufgabe abzuschließen.
Ich habe festgestellt, dass cin.peek() dies tun wird blockiert werden, wenn Sie nur die ESC-Taste drücken. Aber Peek ist Peek, es sollte NICHT blockiert werden.
Hier ist der Code, um dieses Problem zu reproduzieren. Es kann die Aufwärts-Taste, aber die ESC-Taste
erkennen

Code: Select all

#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

Top