2010-10-31 16 views
23

Bien, he estado investigando sobre cómo hacer esto, pero digo que estoy ejecutando un programa que tiene un rendimiento total en el terminal, ¿cómo borraría la pantalla de mi programa? para que pueda mantener mi programa en ejecución?Borrando el terminal en Linux con el código C++

Sé que puedo simplemente escribir clear en el terminal y lo borra bien, pero como dije, para este programa sería más beneficioso para mí.

Encontré algo que funciona, sin embargo, no estoy seguro de qué es o qué está haciendo.

cout << "\033[2J\033[1;1H"; 

Eso funciona, pero no tengo ni idea de lo que es, si se pudiera explicar, de lo mucho que lo apreciaría.

Respuesta

31

Estos son códigos de escape ANSI. El primero (\033[2J) borra toda la pantalla (J) de arriba a abajo (2). El segundo código (\033[1;1H) coloca el cursor en la fila 1, columna 1.

escapa

todas las normas ANSI comienzan con la secuencia ESC[, tener cero o más parámetros delimitados por ; y finaliza con una letra de comando (J y H en su caso). \033 es la secuencia octal de estilo C para el carácter de escape.

Ver here para el roadshow completo.

+1

+1 Tengo que ser más rápido en esto: P – GWW

+0

Bien, muchas gracias, justo lo que necesitaba – John

+0

Asegúrese de marcar la pregunta como aceptada. – GWW

9

En lugar de depender de secuencias de escape específicas que pueden romperse en situaciones inesperadas (aunque aceptando que la compensación está bien, si es lo que quiere), puede hacer lo mismo que haría en su shell:

std::system("clear"); 

Aunque generalmente se debe evitar el sistema(), para un programa interactivo del usuario, ni el análisis adicional de la shell ni la sobrecarga del proceso son significativos. No hay problema con el escape de shell, en este caso.

Siempre puede teclear/ejecutar para llamar a clear si desea evitar el sistema(). Si ya está utilizando [n] curses u otra biblioteca de terminales, úselo.

+1

variable de entorno TERM no establecida. –

0

Para la portabilidad, debe obtener la cadena de la capacidad clcap (clear) de termcap (Clear screen y cursor home). (O use std :: system ("clear") como lo dijo Roger Pate).

man 3 termcap (en ncurses)
hombre 5 termcap
conjunto | grep TERMCAP

+0

No puedo entenderlo ¿me puedes explicar? –

Cuestiones relacionadas