Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用';顶部';程序用于在屏幕上重新显示数据?_C++_C_Linux_Terminal_Command Line Interface - Fatal编程技术网

C++ 使用';顶部';程序用于在屏幕上重新显示数据?

C++ 使用';顶部';程序用于在屏幕上重新显示数据?,c++,c,linux,terminal,command-line-interface,C++,C,Linux,Terminal,Command Line Interface,您可能知道,当您在终端中运行“top”命令时,它将显示计算机上最繁忙的进程,并定期更新值,而无需添加一行 允许它这样做的技术是什么?从CLI程序更改打印的字符串?终端接受一些用于屏幕定位等的控制序列。查看诅咒/library。另外,如果只想修改一行,只需使用\r再次打印该行即可。一种方法是获取终端窗口的宽度/高度,每次只需清除/打印整个屏幕。另一种方法是使用重新定位光标并覆盖该位置上的内容。第三种方法是使用库,例如。注意,第三种方法是第二种方法的子集:)如果您不想使用诅咒,几乎可以始终使用ANS

您可能知道,当您在终端中运行“top”命令时,它将显示计算机上最繁忙的进程,并定期更新值,而无需添加一行


允许它这样做的技术是什么?从CLI程序更改打印的字符串?

终端接受一些用于屏幕定位等的控制序列。查看
诅咒
/library。另外,如果只想修改一行,只需使用
\r
再次打印该行即可。

一种方法是获取终端窗口的宽度/高度,每次只需清除/打印整个屏幕。另一种方法是使用重新定位光标并覆盖该位置上的内容。第三种方法是使用库,例如。

注意,第三种方法是第二种方法的子集:)如果您不想使用
诅咒
,几乎可以始终使用ANSI转义码(
“\033[H\033[2J”
清除终端屏幕并将光标移动到原点)。在最坏的情况下,如果终端不支持它,则会得到七个垃圾字节。实际上,当前所有终端都至少支持基本的ANSI转义。在Linux中,
isatty(STDIN_FILENO)
如果标准输入是终端,则返回1;如果是,则正常的ANSI转义序列几乎肯定会工作。