如何绘制到控制台/终端的某个部分?

时间:2014-03-03 11:35:41

标签: c++ c terminal cross-platform command-line-interface

我很想知道如何绘制/更新终端/控制台的某个区域。是否有任何跨平台库可以这样做?

我想知道的原因是因为我正在开发一个即时消息命令行应用程序,我很想知道如何将消息查看器(所有消息都去的地方)单独更新到您为其编写命令/文本的位置其他人在聊天。显然,如果我只是尝试获取输入并写入cout,那么用户输入的输入和消息将被“干扰”(通过干扰我的意思是分成多行)。

我在考虑使用两个流对象:一个用于存储视图(来自服务器的消息/输出),另一个用于存储用户的输入,只需在需要时重绘。但是,这似乎效率低下,需要我清除屏幕(在这种情况下,我不知道如何有效地以跨平台方式清除屏幕)。

我还在考虑切换到Qt / wxWidgets,因为它可能更容易制作GUI。

2 个答案:

答案 0 :(得分:2)

使用ncurses库以与终端无关的方式编写基于文本的用户界面。

答案 1 :(得分:2)

根据@Naruto的建议,ncurses是一个很好的方法。在更基本的级别,你也可以使用ANSI转义码在屏幕上移动光标:

例如,要将光标定位在第23行的第5行,您可以输入此

echo -n "\033[5;23H"

还有更多示例here