我对C ++有一些了解,但是偶然发现了一个问题。我希望用户输入一些文本,但是当它花费的时间超过X秒时,该程序将继续运行。我想这是不可能的,但也许您对此有所了解。
它将在命令行中,没有GUI。 我不确定程序的外观如何,但是会类似于CMD-RPG。我想使用“快速时间事件”使它更加令人兴奋。
答案 0 :(得分:1)
我无法发表评论,所以我将其留在这里
答案 1 :(得分:0)
由于我无法发表评论,因此我将其作为答案。
解决此问题的一种可能方法是拥有2个线程:
输入捕获线程:由于接收输入是线程阻塞操作,因此您应该有一个只轮询用户输入的线程,将该输入放入线程安全的缓冲区中
主线程上的快速时间功能:将负责执行快速时间事件的功能。可以执行以下操作(伪代码):
clear input buffer //the buffer provided by the input capture thread
bool success = false;
while(current time < ending time)
{
if(input buffer isn't empty)
{
get contents of input buffer and send contents to cout
if (user has finished input correctly)
{
success = true;
break;
}
clear buffer
}
}
return success;
要执行此操作,您需要在命令提示符下关闭echo
(有关详细信息,请参见this page)
尽管Diogo的参考非常出色(而且内容翔实),但我相信这个答案比OP指出该程序将在Windows上运行更为适用。