2010-12-08 12 views
5

Ist es möglich, mit "cout" gedruckten Text zu ändern? Ich möchte es den aktuellen Prozentsatz von etwas zeigen lassen, ohne für jeden Prozentsatz eine neue Linie zu haben. Ist das möglich?C++ Ausgabe von "cout" ändern

+0

cout soll nicht ein abstracton einer Konsole sein, obwohl die meisten Terminals das Wagenrücklaufzeichen gerne richtig interpretieren. – lijie

+0

Was ist dann für die Konsole? – nebkat

+0

Sie müssen Ihre Frage klären, es ist nicht klar, was Sie erreichen wollen und was "Veränderung" bedeutet. –

Antwort

11

Dies funktioniert für mich:

std::cout << "1111"; 
std::cout << "\r"; 
std::cout << "2222"; 

\r ist ein Carriage Return Symbol. Setzt den "Cursor" zurück an den Anfang der Zeile.

Alternativ können Sie \b Zeichen verwenden. Dies ist die Rücktaste. Beim Ausdruck geht es ein Zeichen zurück.

+0

Sie haben 3 '\ r' (Carriage Return) mehr als Sie tatsächlich benötigen (es sei denn Sie' '' b '', Backspace) – Hasturkun

+0

Danke, das habe ich bereits bearbeitet. – detunized

+0

Das richtige Zeilenende-Symbol ist "\ n", nicht "\ r". Die Standardbibliothek interpretiert "\ n" als CR-LF, LF-CR oder was auch immer für Ihre Plattform geeignet ist. Es gibt auch std :: endl, was zusätzlich das Spülen des Puffers erzwingt. –

1

Im Allgemeinen ist es nicht möglich. (Stellen Sie sich vor, dass die Ausgabe von cout direkt an einen Drucker übergeben wird. Wie würden Sie es anweisen, die letzte Zeile zu "unprint"?) cout ist ein Ausgabestrom, es macht keine Annahmen darüber, an welches Medium die Ausgabe gesendet wird, oder über die Fähigkeiten dieses Mediums. Bestimmte Tricks können in einigen Fällen erreichen, was Sie wollen, aber bei anderen scheitern. Wenn Sie etwas dynamischeres als die reine Ausgabe von Nur-Text wünschen, ist vielleicht cout nicht das richtige Werkzeug zu verwenden.

0

Eine Sache, die Sie definitiv nicht von Cout bekommen, ist die Länge der Klemmenleitung. Da dies geändert werden kann, könnten Sie zu lange Zeilen verwenden, die (mit '\ r') das Drucken neuer Zeilen bei jedem Update verursachen. Wenn Sie eine bestimmte Plattform verwenden möchten, verwenden Sie plattformspezifische Funktionen, um die Terminalgröße zu erhalten (beachten Sie, dass Sie möglicherweise an kein Terminal angeschlossen sind, z. B. an Datei umgeleitet).