回答
如何:
/* Wait 5 seconds. */
alarm(5);
/* getline */
/* Cancel alarm. */
alarm(0);
另外,您可以使用setitimer
。
作为R. Martinho费尔南德斯请求:
功能alarm
安排当前进程从其呼叫接收SIGALRM在5秒。 SIGALRM
si用于异常终止进程的默认操作。拨打alarm(0)
将禁用定时器。
我不知道是否有办法关闭并重新打开stdin或其他东西来通过getline语句......? – sje397 2013-03-20 13:01:13
@cnicutar Thnq。它的工作:P – 2013-03-20 13:04:47
最后我得到输出作为“闹钟”。如何抑制那个?谢谢@cnicutar – 2013-03-20 13:05:58
OK,等待5
秒,terminate
如果没有输入:
#include <thread>
#include <atomic>
#include <iostream>
#include <string>
int main()
{
std::atomic<bool> flag = false;
std::thread([&]
{
std::this_thread::sleep_for(std::chrono::seconds(5));
if (!flag)
std::terminate();
}).detach();
std::string s;
std::getline(std::cin, s);
flag = true;
std::cout << s << '\n';
}
+1标准解决方案,呵呵 – 2013-03-20 13:24:35
不带线程pllzzz ... – 2013-03-20 13:35:51
@ user2164410 - 为什么不 - 这是处理这种需求的常用方式。在5秒钟之前允许发送一个线路输入信号,而不是等到时间间隔结束。 – 2013-03-20 13:48:14
- 1. fcntl.flock - 如何实现超时?
- 2. 如何实现epoll超时?
- 3. getline上的C++超时
- 4. 如何实现套接字超时?
- 5. 如何在python中实现超时?
- 6. 如何用Quartz实现超时?
- 7. 实现一般的超时
- 8. 实现我自己的getline函数
- 9. 实现超时功能/块
- 10. 在c中实现超时#
- 11. 在QT中实现超时
- 12. 在HTTP中实现超时
- 13. 实现通信超时
- 14. 在webviews中实现超时
- 15. 套接字超时实现
- 16. 如何在此流上不支持超时时实现.NET Stream超时
- 17. Excel VBA:如何实现定时器来检查代码超时
- 18. 如何在使用sync.WaitGroup.wait时实现超时?
- 19. 如何在超时时段实现Get-Credential
- 20. 如何在使用File.Copy时实现超时?
- 21. 带显示超时错误消息的ASP .NET超时实现
- 22. wget的网址超时实现
- 23. 实现MPMoviePlayer超时的最佳方式
- 24. 需要实现UIRefreshControl的超时机制。
- 25. 带有超时消息实现的StatusBar
- 26. C#未来的超时检测实现
- 27. 在TFTP中的C超时实现
- 28. 如何实现urlllib2.urlopen的超时控制
- 29. 如何实现会话超时页面使用asp.net mvc的
- 30. C++:如何实现任意函数调用的超时?
@RandyHoward:我不认为这是一个确切的重复。 'getline()'使用起来更加简单,而且知道如何添加一个计数器对新手来说会很有用。这个问题应该保持合法。 – 2013-03-20 13:00:23
@kassak:没有,仍然不是一个确切的副本,答案表明,我认为。无论哪种方式,我认为这是一个有用的问题,因为'getline()'被使用了很多,而且知道如何使用它会对未来的读者有好处。只是我2美分。 – 2013-03-20 13:06:25
StackOverflow不是这个问题的适当位置。我们不会为您编写代码。你需要做自己的编码,如果你不确定为什么某些东西不能按预期工作,请在代码中加上一个解释你期望它做什么,以及它实际上在做什么,包括所有的错误信息。参见[关于StackOverflow](http://stackoverflow.com/about)。 – 2013-03-20 13:09:12