Tutto ciò che si ottiene cout
viene emesso. È solo che un terminale interpreterà '\b'
come "go back one character"
. Prova a reindirizzare l'output a un file ed esaminarlo con un editor (esadecimale) per verificare che tutti i caratteri (incluso '\b'
) siano presenti.
A prima vista, si potrebbe pensare che i terminali stampino l'output così com'è. Questo è sbagliato, però. I terminali cambiano il modo in cui si comportano ogni volta che incontrano una sequenza speciale di controllo o caratteri. Il carattere '\b'
(= 0x08
= backspace) è uno di quelli. Più può essere trovato a http://ascii-table.com/ansi-escape-sequences.php. Puoi provare a stampare alcuni di questi in un terminale e vederli cambiare colore, riscrivere le righe correnti e così via e così via. In effetti, puoi usare queste sequenze e caratteri speciali per creare app complete come GUI nella riga di comando.
Nota comunque che non con tutti i programmi puoi fare affidamento sul trucco "redirect to a file"
per vedere quali sequenze di controllo terminale scrivono su stdout.Molti programmi rilevano se stanno scrivendo su un terminale o no e modificano il loro uso (o la loro mancanza) delle sequenze di controllo terminale di conseguenza.
L'output è [in realtà diverso] (http://ideone.com/v5dRzc)? –
'system()' richiede 'stdlib.h' o' cstdlib' –
Si dice esplicitamente di cancellare il carattere precedente usando '\ b', come mai questa è una domanda? –