Limpar o ecrã com o c++

Eu gostaria de limpar a tela CMD eu vi algumas opções primeiro é

system('clr');  

mas não quero usar o sistema porque, em seguida, torna-o dependente do windows, o mesmo com a versão unix

Se eu tentar

cout << string(22, '\n');
Então a minha próxima linha de texto está no fundo do ecrã e quero-a no topo. Como posso limpar a tela e levar o texto de volta para o topo da tela?

Assim digo que tenho isto.

cout<<string(22, '\n');
cout<<"************Question 1 *******"<<endl;
cout<<"WHO WAS THE FIRST BLACK PRESEDENT?"<<endl;
cout<<"(1) Obama"<<endl;
cout<<"(2) Bush"<<endl;
cout<<"(3) Jordan" <<endl;
cin>>answer>>endl;
Isto vai limpar o ecrã e depois colocar o mymenu. no fundo do ecrã... Como posso torná-lo tela clara e colocar as perguntas/respostas de volta no topo da tela.

 7
c++
Author: Glen Morse, 2013-06-27

4 answers

Tenta isto: funciona tanto no Linux como no Windows.

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

Esta é uma sequência de caracteres especiais que se traduzem para limpar o comando do ecrã.

Pode incluir isto numa função como por exemplo clrscr() dependendo da sua implementação.

 15
Author: catzilla, 2018-02-28 18:29:21

Se quiser uma solução que funcione no Windows, Mac & Linux / UNIX, terá de criar a sua própria implementação. Não creio que exista uma única forma de o fazer que funcione em todas as plataformas.

Para Mac / Linux/UNIX/BSD / etc., ncurses fornece uma maneira fácil de fazer isso (http://www.gnu.org/software/ncurses/).

Para o Windows, você provavelmente vai querer olhar para conio.h (http://en.wikipedia.org/wiki/Conio.h) ou PDCurses ([11]} http://pdcurses.sourceforge.net ou algo parecido. Alternativamente, parece que você pode fazer isso sem bibliotecas de terceiros, de acordo com este artigo Microsoft KB: http://support.microsoft.com/kb/99261.

Infelizmente não existe uma função C/C++ padrão para fazer isto. Você deve ser capaz de escrever uma pequena função que irá construir e trabalhar em qualquer plataforma usando os diferentes métodos que mencionei e algumas diretivas pré-processador.

Se não ter uma maneira conveniente de detectar a plataforma, eu provavelmente recomendaria cmake.

 8
Author: CmdrMoozy, 2013-06-27 06:30:54

Outra forma seria usar OpenGL, Qt ou SDL, que são plataformas cruzadas e escrever uma consola gráfica. Isto pode ser visto em muitos jogos roguelike, por exemplo Fortaleza anÃ.

 1
Author: user1095108, 2013-06-27 06:49:27

Em Unix try

system("clear")

clrscr() pode não funcionar no UNIX porque alguns compiladores não suportam conio.h

 0
Author: Aswin Murugesh, 2013-06-27 06:23:51