回答
如何:
/* 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. getline上的C++超時
- 3. 如何用Quartz實現超時?
- 4. 如何實現套接字超時?
- 5. 實現通信超時
- 6. 在HTTP中實現超時
- 7. 在c中實現超時#
- 8. 實現超時功能/塊
- 9. 在webviews中實現超時
- 10. 套接字超時實現
- 11. 如何在此流上不支持超時時實現.NET Stream超時
- 12. 如何在超時時段實現Get-Credential
- 13. Excel VBA:如何實現定時器來檢查代碼超時
- 14. 如何在使用sync.WaitGroup.wait時實現超時?
- 15. 帶顯示超時錯誤消息的ASP .NET超時實現
- 16. 實現MPMoviePlayer超時的最佳方式
- 17. wget的網址超時實現
- 18. 在TFTP中的C超時實現
- 19. 如何實現在線預訂系統的超時
- 20. 如何實現帶有超時的ServiceStack Redis客戶端
- 21. 如何實現會話超時頁面使用asp.net mvc的
- 22. 如何通過超時實現WNetAddConnection2的等效?
- 23. C++:如何實現任意函數調用的超時?
- 24. 如何在grails中實現請求超時?
- 25. 如何在Java中實現會話超時?
- 26. 我如何在iPhone中實現會話超時?
- 27. 如何在java中實現高效超時
- 28. 如何使用boost :: asio :: read_some實現超時?
- 29. 如何在android中實現請求超時?
- 30. Laravel如何實現會話超時後鎖定屏幕
@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