c++ - C++ 中的 ASCII 用户界面 w/Unix PuTTY 终端使用转义序列

标签 c++ user-interface terminal ascii

我正在尝试为一个简单的 Internet 聊天程序制作一个简单的 ASCII 用户界面。我计划它看起来像这样:

(名字):消息
(名称):消息
--------------------------------------------
(你):消息|(光标)

我打算使用 ASCII(ANSI?)控制字符来完成此任务。

每当聊天客户端从服务器接收到一条消息时,它应该更新,以便该消息显示为虚线上方的第一条消息,然后将光标返回到其先前的位置,以便用户可以从他们停止的地方继续输入.

我最初的计划是:
1. 保存当前光标位置(\e7)
2. 将光标向上移动 1 行(到虚线)并移动到该行的开头 (\e[1F])
3. 向下移动虚线(\n)
4. 再次将光标向上移动一行(到现在的空行)(\e[1A)
5. 打印服务器消息
6.恢复上一个光标位置(\e8)

一起:“\e7\e[1F\n\e[1A”<<消息<<“\e8”;

我遇到问题的地方是换行符似乎只是将光标移动到下一行,而不是实际插入一个空行。我怎样才能完成这种行为?

这是一项家庭作业,但这只是我想为自己增加的一点天赋。 实际任务已经完成。

注意:处理用户在自己屏幕上的输入的算法已经得到正确处理。

最佳答案

查看类似 pdcurses 的内容.它是跨平台的。这将使所有这些操作变得容易得多。如果您不介意您的代码不可移植,您还可以查看 *nix 上的 curses 和 Windows 上古老的 conio 库。

关于c++ - C++ 中的 ASCII 用户界面 w/Unix PuTTY 终端使用转义序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5784321/

相关文章:

c++ - 不包含继承?

javascript - 如何使用语义 UI react 打开多个 Accordion ?

linux - 如何在 Linux 中构建自定义终端?

bash - 将所有输出重定向到 lolcat

ios - 在 Swift 中更改 ViewController 后禁用任务栏?

java控制台输出成为下一个控制台输入

c++ - 虚拟成员类的调用方法

c++ - 排序节点(链表)C++

c++ - C++11 auto 关键字是否针对所有情况进行了准确定义?或者 : how does auto know what I intend?

ruby - 将值传递给 Ruby 类