GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo actualizar un mensaje impreso en la terminal sin volver a imprimir

Diría que una biblioteca como ncurses estaría acostumbrada a tales cosas. curses ayuda a mover el cursor por la pantalla y dibujar texto y demás.

NMaldición


Algo como esto:

std::stringstream out;
for (int i = 0; i< 10; i++)
{
  out << "X";
  cout << "\r" << "[" << out.str() << "]";
}

El bit disimulado es el carácter de retorno de carro "\r" que hace que el cursor se mueva al comienzo de la línea sin pasar a la línea siguiente.


Otros ya han señalado que puedes usar \r para volver al principio de la línea actual y sobrescribir toda la línea.

Otra posibilidad es usar el carácter de retroceso ("\b") para borrar algunos espacios y sobrescribir solo esos espacios. Esto puede tener un par de ventajas. Primero, obviamente evita tener que regenerar todo en la línea, lo que a veces puede ser ligeramente doloroso (aunque eso es bastante inusual). En segundo lugar, puede evitar algunos problemas al mostrar datos que (por ejemplo) se reducen de tamaño a medida que los escribe, por ejemplo, si está mostrando una cuenta regresiva de 100 a 0, con \r debe tener cuidado de no sobrescribir toda la longitud anterior, o su cuenta regresiva pasará de (por ejemplo) 100 a 990 (es decir, dejando intacto el "0" anterior).

Tenga en cuenta, sin embargo, que si bien el retroceso dentro de una línea normalmente funciona, un retroceso al comienzo de una línea puede o no mover el cursor/posición de escritura a una línea anterior. Para la mayoría de los propósitos prácticos, solo puede moverse dentro de una sola línea.


intenta usar \r en lugar de \n al imprimir la nueva "versión".

for(int i=0;i<=100;++i) printf("\r[%3d%%]",i);
printf("\n");

Linux
  1. ¿Cómo actualizar el controlador del adaptador Ralink 5390 a través de la terminal?

  2. Cómo establecer la configuración de proxy en la línea de comandos o terminal de Linux

  3. ¿Cómo borro caracteres impresos en una aplicación de consola (Linux)?

  4. ¿Cómo envío un mensaje a mi socket.io websocket desde la línea de comando en Linux?

  5. ¿Cómo agregar una línea en un archivo comprimido sin descomprimir?

Cómo usar Instagram en la terminal

Cómo mostrar el historial de Bash sin números de línea

Cómo deshabilitar los anuncios en el mensaje de bienvenida de la terminal en Ubuntu Server

¿Cómo crear un cuadro de mensaje desde la línea de comandos?

¿Cómo tirar de una línea en particular sin mover el cursor en Vim?

cómo trazar stdin desde la terminal?