我正在写一些测验程序。此程序向用户抛出问题,直到指定的时间限制用完为止。它现在如何设置是在一个提升线程中运行的测验功能,时序方面由该线程上的timed_join()处理。我遇到的问题是当用户使用cin回答问题时,该线程将超过已建立的时间限制。有没有办法让它打断cin电话?
答案 0 :(得分:2)
您可以使用getchar
,getch
或getche
在非阻止性阅读中逐字阅读输入字符。如果你已经循环足够长的时间来达到超时,那么停止循环:)。
答案 1 :(得分:2)
您可以Boost.Asio使用here异步读取所述here - 示例代码的更新链接为{{3}}。
答案 2 :(得分:0)
您可能需要使用其他输入法。 readline库可能能够帮助您。或者,如果您使用的是Linux,则可以转到纯文件描述符,像非阻塞套接字一样使STDIN_FILENO
无阻塞并使用select
系统调用,然后您可以获得两个超时并知道什么时候输入就绪。