用C ++代码在Linux中清除terminal

好吧,我一直在研究如何做到这一点,但说我正在运行一个程序,在terminal上有一个输出端,我怎样才能清除我的程序内的屏幕,使我可以保持我的程序运行?

我知道我可以在terminalinputclear ,清除它,但正如我所说,这个程序对我来说会更有益处。

我发现了一些有用的东西,但是我不确定它是什么或者它在做什么。

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

这很有效,但我不知道它是什么,如果你能解释它,我不会感激它。

Solutions Collecting From Web of "用C ++代码在Linux中清除terminal"

这些是ANSI转义代码。 第一个( \033[2J )从上到下清除整个屏幕( J )( 2 )。 第二个代码( \033[1;1H )将光标定位在第1行第1列。

所有ANSI转义都以ESC [ ,有零个或多个参数分隔; ,并以命令字母结尾( JH在你的情况下)。 \033是转义字符的C风格八进制序列。

在这里看到完整的路演。

而不是依赖于特定的转义序列,可能会在意外的情况下破坏(虽然接受权衡是好的,如果是你想要的),你可以做你在shell的同样的事情:

 std::system("clear"); 

尽管通常要避免使用system(),但对于用户交互式的程序来说,额外的shell解析和处理开销都不是很重要。 在这种情况下,shell逃脱也没有问题。

如果你想避免system(),你总是可以通过fork / exec来调用clear。 如果您已经在使用[curses]或其他终端库,请使用它。

为了便于携带,您应该从termcap的cl(清除)功能(Clear screen and cursor home)中获取字符串。 (或者按照Roger Pate的说法使用std :: system(“clear”))。

男人3 termcap(在ncurses)
男人5 termcap
设置| grep TERMCAP