2012-05-21 17 views
15

Ok, sono un po 'imbarazzato nel chiedere una cosa così semplice, ma ancora.Mostrare i progressi nell'applicazione della riga di comando

Ho un'applicazione di utilità della riga di comando e ho bisogno di mostrare il progresso all'utente.

ho potuto scrivere il progresso in cout, in questo modo:

std::cout << "10%\n"; 
... 
std::cout << "20%\n"; 
... 
std::cout << "30%\n"; 

... ma come risultato utente vedrà:

some line printed before 
10% 
20% 
30% 
... 

... ma quello che ho veramente bisogno è che la percentuale ha fatto aggiornati, come questo all'inizio:

some line printed before 
10% 
... 

... e dopo l'aggiornamento:

some line printed before 
20% 
... 

... e dopo secondo aggiornamento:

some line printed before 
30% 
... 

Come devo ottenere questo?

+3

Anche se le risposte qui sotto sono buone, è impossibile dire con certezza che cosa funziona, a meno che non si stato il sistema operativo il programma viene eseguito in. –

+0

@AmigableClarkKant Ho bisogno che il lavoro sia su Linux (Ubuntu) e Windows. –

+1

Penso che la risposta di Joachim Pileborgs dovrebbe funzionare bene per questi. –

risposta

24

Invece di utilizzare '\n', utilizzare '\r':

std::cout << "\r10%" << std::flush; 

nuova riga di stampa ('\n') quando fatto.

È importante utilizzare std::flush in modo che i contenuti del flusso vengano effettivamente visualizzati.

6

Utilizzare un ritorno a capo.

std::cout << "\r10%"; 
std::cout << "\r20%"; 
... 

Va all'inizio della riga.

Problemi correlati