'\b': ostream und backspace
-
Ich finde
"\b"extrem praktisch (zum Beispiel um eine Liste auszugeben) und es zu umgehen erfordert meistens relativ viel Aufwand.(auto& e : vec) cout << e << ' '; cout << "\b\n";Daher wollte ich fragen, ist das Verhalten von
"\b"(und auch"\r") definiert? Auf welchen Plattformen (Windows/Linux/...) wird es laufen? Wie oft funktioniert es dort und geht es auch mitstd::flush?
-
Es ist definiert, dass \b ein Backspacezeichen und \r ein CR-Zeichen ist. Was das genau bedeutet, hängt davon ab, wo diese Zeichen landen. Auf einer typischen Konsole wird dein Beispiel funktionieren und es wird das letzte Leerzeichen in der Ausgabe gelöscht. Schreibst du das gleiche in eine Datei, dann hast du da einfach ein Leerzeichen und ein Backspacezeichen hintereindander drin stehen, was sicherlich nicht das ist, was du dir erhofft hättest.
Da du nie wissen kannst, wo die Ausgabe landet, würde ich Textformatierung mit Sonderzeichen (ausgenommen \n und eventuell \t) sein lassen. Wenn du eine Konsolenausgabe schick formatieren willst, dann stell sicher, dass du auch in einer Konsole bist und dann kannst du auch gleich deren meist sehr viel mächtigeren Formatierungsmöglichkeiten benutzen (d.h. benutz eine Konsolenbibliothek).
Wie oft funktioniert es dort und geht es auch mit std::flush?
Was soll std::flush mit dem Thema zu tun haben?