gpt4 book ai didi

C++终端应用并发输入输出

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:45 24 4
gpt4 key购买 nike

我正在尝试实现一个类似于聊天客户端的应用程序,在该应用程序中,用户可以在键入自己的消息时收到消息。

我将通过一个示例来解释我希望我的程序如何运行:在传入消息之前:

>user partial input

传入消息后:

>the new message
>user partial input(cursor is here)

相反,传入消息后自然发生的是这样的:

>user partial input the new message
>(cursor is here)

在那之后,用户仍然可以使用退格键删除他之前写的内容,但它不会显示在屏幕上,整体 UI 困惑。

有没有什么方法可以在不使用 ncurses 的情况下实现所需的行为?

谢谢。

编辑:抱歉,我忘了写下我的环境是什么,它是 Cygwin。感谢您的所有回答。

最佳答案

虽然 ncurses 可能是实现这一目标的最灵活和最简单的方法,但您可以自己做一些工作。

您必须自己仲裁 IO。您可以使用“\r”返回到一行的开头,而无需 ncurses 或任何特定于平台的终端交互。

整体流程是:

  • 你有一个输入循环按字符输入缓冲区。默认行为是回显每个特点。一旦您收到换行,你会提交那行从你的缓冲区中打印新队。
  • 如果收到传入消息的通知,您应该打印一个“\r”将光标移回行首,打印空格以清除该行,然后再打印一个“\r”将光标恢复到开头,用换行符打印消息,然后打印当前缓冲的输入。

这里有很多边缘情况需要考虑,但 ncurses 不是您唯一的选择。据我测试,该技术在 Windows 和 Linux 上均有效。

关于C++终端应用并发输入输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6155414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com