Frage

Ich schreibe ein Kommandozeilen-Tool für Mac OS X, die eine Reihe von Dateien verarbeitet. Ich möchte dem Benutzer die aktuelle Datei zeigen, das verarbeitet wird, wollen aber nicht eine Unmenge von Dateien das Terminalfenster verschmutzen.

Stattdessen würde Ich mag eine einzige Zeile zur Ausgabe des Dateipfad verwenden, wieder verwenden dann diese Zeile für die nächste Datei. Gibt es ein Zeichen (oder ein anderer Code), um zu std::cout dies zu erreichen?

Auch wenn ich dieses Tool für Windows neu ausrichten wollte, wäre die Lösung die gleiche für beide Plattformen sein?

War es hilfreich?

Lösung

"\ r" sollte beide arbeiten für Windows und Mac OS X.

So etwas wie:

std::cout << "will not see this\rwill see this" << std::flush;
std::cout << std::endl; // all done

Andere Tipps

Ich habe keinen Zugriff auf einen Mac, aber von einem reinen Konsole Standpunkt, dies wird weitgehend abhängig sein, wie man es behandelt den Wagenrücklauf und Zeilenvorschub-Zeichen. Wenn Sie buchstäblich eine oder die andere an die Konsole senden können, möchten Sie senden nur ein Wagenrücklauf.

Ich bin mir ziemlich sicher behandelt Mac beiden Zeilenumbrüche und Line-Feeds anders als * nichts und Fenster.

Wenn Sie sich für in-Place-Updates (beispielsweise Überschreiben der aktuellen Zeile) suchen, würde ich am curses lib empfehlen suchen. Dies sollte eine Plattform unabhängige Mittel bereitstellen zu tun, was Sie suchen. (Weil, auch unter Verwendung von Standard-C ++ gibt es keine Plattform unabhängige Mittel von dem, was Sie für Fragen).

std :: cout Interpretes "\ r" als Rückkehr zum Anfang der Zeile, wenn Sie whant nicht hinzugefügt werden "<< endl" jedes Mal, verwenden Sie "\ n"

std::cout << "this will work!\nSee... a new line!" << std::endl;

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top