Wie im Titel. Wie kann ich die Konsole in C ++ löschen?
c++
windows
console-application
dev-c++
Thomas B.
quelle
quelle
Antworten:
Für reines C ++
Das kannst du nicht. C ++ hat nicht einmal das Konzept einer Konsole.
Das Programm kann auf einem Drucker gedruckt, direkt in eine Datei ausgegeben oder für alles, was es interessiert, auf die Eingabe eines anderen Programms umgeleitet werden. Selbst wenn Sie die Konsole in C ++ löschen könnten, würden diese Fälle erheblich unübersichtlicher.
Siehe diesen Eintrag in den comp.lang.c ++ FAQ:
Betriebssystemspezifisch
Wenn es immer noch sinnvoll ist, die Konsole in Ihrem Programm zu löschen, und Sie an betriebssystemspezifischen Lösungen interessiert sind, gibt es diese.
Überprüfen Sie für Windows (wie in Ihrem Tag) diesen Link:
Bearbeiten: Diese Antwort wurde bereits mit verwendet
system("cls");
, da Microsoft dies angekündigt hat. In den Kommentaren wurde jedoch darauf hingewiesen, dass dies keine sichere Sache ist . Ich habe den Link zum Microsoft-Artikel aufgrund dieses Problems entfernt.Bibliotheken (etwas tragbar)
ncurses ist eine Bibliothek, die die Manipulation von Konsolen unterstützt:
quelle
system
, und Ihrem Artikel einen Link hinzugefügt, der erklärt, warum.Für Windows über die Konsolen-API:
Es ignoriert glücklich alle möglichen Fehler, aber hey, es ist das Löschen der Konsole. Nicht wie
system("cls")
behandelt Fehler besser.Für * nixes können Sie normalerweise ANSI-Escape-Codes verwenden.
Die Verwendung
system
dafür ist einfach hässlich.quelle
echo
via verwenden,system()
anstatt in stdout zu schreiben.system()
ist ein häufiger Fehler. Dies ist auch Ihre vorgeschlagene Methode für Unices. Dies sollte man auf POSIX-Systemen tun. Sie haben den Win32-Teil richtig verstanden, obwohl Sie die Konvention "Zurückblättern" nicht übernommen haben.Für Linux / Unix und vielleicht einige andere, aber nicht für Windows vor 10 TH2:
wird das Terminal zurücksetzen.
quelle
Der einfachste Weg für mich, ohne das Rad neu erfinden zu müssen.
quelle
Das Ausgeben mehrerer Zeilen an die Fensterkonsole ist nutzlos. Es werden nur leere Zeilen hinzugefügt. Leider ist der Weg Windows-spezifisch und beinhaltet entweder conio.h (und clrscr () ist möglicherweise nicht vorhanden, das ist auch kein Standard-Header) oder die Win-API-Methode
Für POSIX-Systeme ist es viel einfacher, Sie können ncurses oder Terminalfunktionen verwenden
quelle
quelle
Um den Bildschirm zu löschen, müssen Sie zuerst ein Modul hinzufügen:
Dadurch werden Windows-Befehle importiert. Anschließend können Sie mit der Funktion 'System' Stapelbefehle ausführen (mit denen die Konsole bearbeitet wird). Unter Windows in C ++ lautet der Befehl zum Löschen des Bildschirms:
Und das würde die Konsole löschen. Der gesamte Code würde folgendermaßen aussehen:
Und das ist alles was Sie brauchen! Viel Glück :)
quelle
stdlib.h
ist dies durch den C-Standard festgelegt und hat weder mit dem "Importieren von Windows-Befehlen" noch mit Windows selbst zu tun. Abgesehen von diesem Trottel geht es dir gut.In Windows:
Unter Linux / Unix:
quelle
Verwenden Sie
system("cls")
, um den Bildschirm zu löschen:quelle
Dies ist unter MAC schwierig, da es keinen Zugriff auf die Windows-Funktionen hat, die zum Löschen des Bildschirms beitragen können. Meine beste Lösung besteht darin, Zeilen zu schleifen und hinzuzufügen, bis das Terminal frei ist, und dann das Programm auszuführen. Dies ist jedoch nicht so effizient oder speicherfreundlich, wenn Sie dies hauptsächlich und häufig verwenden.
quelle
In Windows haben wir mehrere Optionen:
clrscr () (Header-Datei: conio.h)
system ("cls") (Header-Datei: stdlib.h)
Verwenden Sie unter Linux das System ("clear") (Header-Datei: stdlib.h)
quelle
Hier ist eine einfache Möglichkeit, dies zu tun:
quelle
Verwenden Sie System :: Console :: Clear ();
Dadurch wird der Puffer gelöscht (geleert)
quelle
}}
Rufen Sie einfach überall cls () auf
quelle
Sie können die Clear Console-Methode des Betriebssystems über das System ("") verwenden.
für Windows wäre es System ("cls"); Zum Beispiel
und anstatt drei verschiedene Codes für verschiedene Betriebssysteme freizugeben. Machen Sie einfach eine Methode, um herauszufinden, was os läuft.
Sie können dies tun, indem Sie feststellen, ob mit #ifdef eindeutige Systemvariablen vorhanden sind,
z
quelle
Bearbeiten: Frage komplett überarbeitet
Testen Sie einfach, auf welchem System sie sich befinden, und senden Sie je nach System einen Systembefehl. Dies wird jedoch zur Kompilierungszeit festgelegt
Dies ist eine völlig neue Methode!
quelle
cout
möglicherweise in eine Datei umgeleitet. Dann gibt es überhaupt kein Konzept für eine Konsole.benutze: clrscr ();
quelle
Der einfachste Weg wäre, den Stream mehrmals zu leeren (idealerweise größer als jede mögliche Konsole). 1024 * 1024 ist wahrscheinlich eine Größe, die kein Konsolenfenster jemals haben könnte.
Das einzige Problem dabei ist der Software-Cursor. Das blinkende (oder nicht blinkende) Ding befindet sich je nach Plattform / Konsole am Ende der Konsole und nicht oben. Dies sollte jedoch hoffentlich niemals zu Problemen führen.
quelle