Wszystko, co otrzymasz cout
. Po prostu terminal będzie interpretował '\b'
jako "go back one character"
. Spróbuj przekierować dane wyjściowe do pliku i zbadaj je za pomocą edytora (hex), aby zobaczyć, że znajdują się tam wszystkie znaki (w tym '\b'
).
Na pierwszy rzut oka można by pomyśleć, że terminale drukują wydruki tak jak są. To nieprawda. Terminale zmieniają sposób, w jaki się zachowują, gdy napotykają na jedną ze specjalnych sekwencji kontrolnych lub znaków. Jednym z nich jest znak '\b'
(= 0x08
= backspace). Więcej można znaleźć pod adresem http://ascii-table.com/ansi-escape-sequences.php. Możesz spróbować wydrukować niektóre z nich na terminalu i zobaczyć, jak zmienia kolory, przepisać bieżące linie i tak dalej i tak dalej. W rzeczywistości można użyć tych specjalnych sekwencji i znaków, aby utworzyć kompletne aplikacje typu GUI w wierszu polecenia.
Należy jednak zauważyć, że nie we wszystkich programach można polegać na sztuczce "redirect to a file"
, aby zobaczyć, jakie sekwencje kontrolne terminali zapisują na standardowe wyjście.Wiele programów wykrywa, czy piszą do terminala, czy też nie i odpowiednio dostosowują ich użycie (lub ich brak) w sekwencji sterowania terminalem.
Twoje dane wyjściowe są [faktycznie różne] (http://ideone.com/v5dRzc)? –
'system()' wymaga 'stdlib.h' lub' cstdlib' –
Możesz jawnie powiedzieć, aby skasować poprzedni znak za pomocą '\ b', w jaki sposób to jest nawet pytanie? –