Linux C ++:如何在stdout之外显示我的Text应用程序输出?

时间:2015-11-09 15:37:07

标签: c++ linux bash window

我的目标是创建一个可在Linux终端中播放的游戏。但是,有一个概念,我不知道如何命名,所以我的搜索空手而归。

iptraf这样的程序如何在如此低的水平上访问输出,以便它们可以修改每个单元格的背景,前景和字符内容,以及捕获所有键盘输入而不是shell?

我认为在某个地方,存在一个可以修改以显示自定义终端窗口内容的2D数组,但我无法命名这个概念,因此我无法搜索它。我描述的是什么概念?

2 个答案:

答案 0 :(得分:1)

大多数程序,例如vim,weechat / irssi,nano,以及任何其他cli程序,都使用一个独立的缓冲区,其中显示的所有内容都写在其中。每当更新发生时(例如,一些字符被覆盖),该缓冲区就被写入stdout。当你输出整个缓冲区时,这会让人觉得你在角色的位置上交换正确的东西。

程序需要在开始在终端上写入内容之前保存当前的stdout,这样当程序完成时,那里的初始输出可以返回到终端(它被写回到stdout)。 / p>

有很多API可以帮到您。最广泛使用的是ncurses。

编辑:哦,它被称为多缓冲(或屏幕缓冲)。

答案 1 :(得分:0)

根据this meta-answer的想法,我回答了这个问题,这样我就可以从"未答复的"列表。

您正在寻找的概念由@ 123描述,它被称为ncurses