[C++] Eingabe in Konsole erst nach bestimmter Zeit zulassen

Freak

NULL
Hallo Leute!
Ich habe erst vor kurzem angefangen, mir ein wenig C++ beizubringen.
Jetzt habe ich folgende Frage:

Was wäre die eleganteste Methode, eine Eingabe in der Konsole erst nach Ablauf
einer bestimmten Zeit zuzulassen?


Wenn ich mit Sleep den Programmablauf verzögere, ist es natürlich schon möglich
Text einzugeben, der dann bei der nächsten cin-Aufforderung im Eingabefeld erscheint.

Oder anders gefragt: Wie könnte ich diesen Text wieder löschen?
Und wie nennt sich das überhaupt? Eingabepuffer?

Ich hoffe die Frage war verständlich und wird wohl kaum schwierigkeiten bereiten,
da ich wärscheinlich nur drüber hinweg gelesen habe...:rolleyes:
 
Naja...
Jetzt gibt es 3 Möglichkeiten, warum ich keine Antworten bekommen habe...

1. Dieser Thread wurde übersehen
2. alle Fragen sich, wie blöd man denn sein muss um so eine Frage zu stellen:rolleyes:
3. es weiß tatsächlich keiner eine Antwort


Was trifft denn jetzt zu?
 
Ich befürchte, es trifft die 3. Möglichkeit zu :(.
Leider weiß ich da auch keinen konkreten Rat. Evtl. könntest Du innerhalb der Zeit auf jeden Tastendruck mit einem Backspace reagieren, den Du auf cout ausgibst. Aber ideal ist das wohl auch nicht. Vielleicht kannst Du auch was mit den istream-Memberfunktionen unget oder ignore machen. Wissen tue ich das allerdings nicht.
 
Vieelicht gibt es dazu ja auch keine "optimale bzw. integrierte" Lösung weil man sich fragen muss wozu soll das sinnvoll sein, bei einem Konsolenprogramm :confused:
 
Erstmal danke für die Antworten.
Ich meinte, in Foren schon öfters auf dieses Thema gestoßen zu sein...
Da habe ich mich wohl geirrt...:rolleyes:
Deshalb habe ich ja auch "eleganteste" geschrieben.
Inzwischen würde es auch eine Notlösung tun.

@Online-Skater: Ich wollte mich mit den ersten C++ Grundkenntnissen
vertraut machen, da bin ich auf dieses Problem gestoßen...:-)

@jokey2:
innerhalb der Zeit auf jeden Tastendruck mit einem Backspace reagieren, den Du auf cout ausgibst
Könntest du mir vielleicht ein paar Stichwörter sprich Befehle dazu posten?:)



P.S.: Kann mir eigentlich jemand erklären, was man bei C++ unter einem Eingabepuffer versteht?
Diesem Wort begegne ich so oft, weiß aber nicht was man damit meint.:rolleyes:
 
1. Backspace ausgeben:
Code:
cout << "\b";
cout.flush();
2. Ein Eingabepuffer ist (nicht nur in C/C++) ein Speicher, in dem Dateiinhalte zwischengespeichert werden, bis sie abgerufen werden. Das hat den Zweck, das Lesen aus Dateien zu beschleunigen. Auch wenn Du zeichenweise aus einer Datei liest, liest das Betriebssystem schon mehr in den Speicher und die Applikation liest immer nur aus dem Eigabepuffer. So werden die Festplattenzugriffe minimiert, abgesehen davon, daß von einer Festplatte immer nur Datenblöcke gelesen werden können.
Andersherum gibt es auch einen Ausgabepuffer. Das ist der Grund für das 'cout.flush()' oben. Damit wird das System veramlaßt, die Daten im Ausgabepuffer sofort zu schreiben.
(Anmerkung: Tastatur und Bildschirm werden von cin und cout wie Dateien behandelt)
 
Gibt es wenigstens eine Möglichkeit, die Konsole nur eine bestimmte Zeit auf eine Eingabe warten zulassen?

Sodass sich zum Beispiel eine bestimmte Aktion 5 Sekunden lang per Tastendruck abbrechen lässt?
 
Zurück