C++实时控制台应用程序,同时输入和输出

3
我正在为某个项目编写一个快速服务器应用程序,因此不想编写完整的GUI。然而,主要问题是服务器的主要部分只能一次进行输入或输出。在我玩过的许多游戏中,它们都有控制台(通常需要以某种方式激活),它们通过将输入和输出分离来解决了这个问题,使得底部行专门用于输入命令,而其余部分则用于输出,就像普通的控制台窗口一样。
有没有可能用尽量少的工作量(即不必从头开始编写自己的控制台窗口)以跨平台的方式实现类似的功能呢?理想情况下,如果服务器在未安装所有GUI组件的系统上运行,我仍然希望以某种方式使用正常的命令提示符,但我想一个能够连接服务器的简单GUI客户端也可以。
通过跨平台,我指的是需要支持Windows和Linux。虽然如果我采用客户端GUI路线,还需要Mac支持。
3个回答

5

鉴于这些库的庞大规模,你能否指向我想要实现实时输入和输出的部分? - Fire Lancer
这里是一些简短的例子。http://www.paulgriffiths.net/program/c/curses.php 我会看看能否找到一个更好的“输入”示例。 - epatel
这是另外几个 http://static.cray-cyber.org/Documentation/NEC_SX_R10_1/G1AB01E/CHAP9.HTML#9.6 - epatel

0

现在的GUI构建器非常容易使用。你可能会发现,通过点击组合GUI比按照你想要的方式解决问题更容易。

我对跨平台部分有些不确定。你能否缩小范围并指定你考虑的平台是哪些?

如果你正在考虑Linux(它本身就是跨平台的,至少在某种程度上),那么我建议你看一下ncurses。


构建GUI并不难,因为它只是一个输入框和一堆带有滚动条的文本项。问题在于我需要编写“管理员”GUI应用程序与服务器之间的所有网络代码来发送命令等。 - Fire Lancer
你需要一个套接字连接,是的。这需要一些配置,但我敢打赌它比ncurses要好用多了 :-) - Kees-Jan

-1
你可能需要研究一下线程。主函数将处理输入,而分离的线程可以查看输出。我使用线程概念实现了实时搜索,在这种情况下,当你按下一个键时,你会立即得到结果,同时通过保持输入处理在一个分离的线程中来保持输入活动。这样,即使在获取更新结果的同时,你也可以继续输入。

1
cin/cout或C语言的等效物是否被指定为线程安全?如果是,那么yes将作为中断工作,但不适用于我所做的事情,因为它无法阻止cout/printf写入终端底部的底行。而curses可以很好地解决这个问题,并且现在需要注意的是Windows 10具有更好的虚拟终端支持,因此不需要太多处理单独的Win32控制台API。 - Fire Lancer
您可以使用全局原子布尔值来控制屏幕上的输出内容。 - SAHIL SINGH DHESI

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接