我有一个 C++ 控制台应用程序,它不断地打印一些输出,同时它还接受std::cin
来自用户的命令(使用)——输出和输入发生在不同的线程中。
如果我在出现一些输出时写了一个文本,那么写的文本与应用程序输出混合在一起。我怎样才能防止这种行为?
为了解决这个问题,我需要在输入文本的行上方显示程序一行。我会在 Minecraft Bukkit 服务器的解决方案中激发自己的灵感——但是对于 C++,我需要相同的解决方案。
假设您希望在输入内容时显示输出,您将需要一些屏幕控制工具来使输出到达与输入区域不同的位置。如果我的任务是在终端上实现类似这样的写作,我会刷新我的ncurses体验。我意识到您在 Windows 控制台上,我不知道 Windows 控制台是否能够实现所需的屏幕控制。
您可以将自定义流缓冲区绑定到std::cin
并std::cout
在幕后使用 curses 功能,但这可能不值得。在任何情况下,这都不是微不足道的。
有一个 Windows 端口的 ncurses 称为 pdcurses。但是,如果您使用的是 Visual Studio,则提供了一个名为 SetConsoleCursorPosition() 的简单函数