000
15.01.2003, 14:48 Uhr
virtual
Sexiest Bit alive (Operator)
|
Hm, jetzt habe ich den Eintrag zum Thema "Bildschirm löschen" verschoben, weil die vorgestellte Lösung nun wirklich nix mit ANSI C(++) zu tun hat. Jedoch ists mir einen kurzen Arrtikel wert, wie man das Löschen des Bildschirms elegant mit Streams verbinden kann, nämlich mit Hilfe von IO-Stream Manipulatoren.
Generell ist zu sagen, daß das Löschen eines Bildschirms nicht vom ANSI Standard abgedeckt ist; dieser kennt noch nicht mal einen Bildschirm. Ein weit verbreiteter Ansatz ist aber, an die Standardausgabe eine spezielle Escapesequenz zu schicken, nämlich "\x1b[H\x1b[J". Diese wird von der Mehrzahl der Terminals unter UNIX verstanden, hin und wieder sogar auch von Windows, wenn der richtige Treiber da ist (ANSI.SYS, glaube ich).
Unter einem Manipulator versteht man eine Funktion, die ein ostream als Parameter erwartet und eine Referenz auf selbigen zurückgibt. Mithin also eine funktion, die folgende Signatur hat:
C++: |
std::ostream& manipulator(std::ostream&);
|
Der bekannteste Manipulator dürfte wohl std::endl sein. Diese Funktion schrteibt ein Newline und flusht den Stream.
Unser Manipulator löscht den Bildschirm, indem er einfach die Escapesequenz schickt:
C++: |
#include <iostream>
std::ostream& clear(std::ostream& ttyStream) { ttyStream << "\x1b[H\x1b[J"; }
|
Wer mag, kann auch den Stream flushen. Anwenden kann man das dann so:
C++: |
int main() { std::cout << clear; }
|
-- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) Dieser Post wurde am 31.08.2003 um 08:35 Uhr von virtual editiert. |