我来自C并且没有太多的编程知识,所以如果我的想法是无稽之谈请耐心等待。
现在,我正在尝试编写一个带有双缓冲控制台输出的简单线程应用程序。我有一个线程可以重置光标位置,绘制缓冲区然后等待n毫秒:
gotoxy(0, 0);
std::cout << *draw_buffer;
std::this_thread::sleep_for(std::chrono::milliseconds(33));
这非常有效。缓冲区由另一个线程独立填充,也没有问题。
现在我希望用户能够提供应用程序信息。但是,我的绘图线程总是将光标放回到开头,因此用户输入和应用程序输出将发生干扰。我知道有像curses这样的库,但如果可能的话,我更愿意自己编写。不幸的是,我还没有找到任何解决方案。我想没有办法让两个控制台游标独立移动?我怎么能解决这个问题?
答案 0 :(得分:0)
我认为你需要做两件事:
您可以使用tcsetattr更改输入模式,尽管这是来自用于* nix系统的termios。由于您使用的是Windows,除非您使用的是cygwin,否则这可能对您不起作用。
或许可以查看:What is the Windows equivalent to the capabilities defined in sys/select.h and termios.h