2012-05-21 23 views
15

Ok, estoy un poco avergonzado de preguntar algo tan simple, pero aún así.Mostrando progreso en la aplicación de línea de comandos

Tengo una aplicación de utilidad de línea de comandos y necesito mostrar el progreso al usuario.

podría escribir el progreso en cout, como esto:

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

... pero como resultado usuario verá:

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

... pero lo que realmente necesito es ese porcentaje obtuve actualizan, como esto al principio:

some line printed before 
10% 
... 

... y después de la actualización:

some line printed before 
20% 
... 

... y después de la segunda actualización:

some line printed before 
30% 
... 

¿Cómo debería lograr eso?

+3

Aunque las respuestas a continuación son buenas, es imposible determinar con certeza qué funcionará, a menos que indique el sistema operativo en el que se ejecuta su programa. –

+0

@AmigableClarkKant Necesito ese trabajo tanto en Linux (Ubuntu) como en Windows. –

+1

Creo que la respuesta de Joachim Pileborgs debería funcionar bien para estos. –

Respuesta

24

En lugar de utilizar '\n', utilice '\r':

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

impresión de nueva línea ('\n') cuando haya terminado.

Es importante usar std::flush para que el contenido de la transmisión realmente se emita.

6

Utilice un carro de retorno.

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

Se dirige al principio de la línea.

Cuestiones relacionadas