2017-08-29 25 views
0

我想執行一個循環並在讓我們說2分鐘後退出循環。在定義的時間量之後退出C++循環

while(condition) { 
    // do stuff 
    // exit this loop after 2 minutes 
} 

有人可以推薦我最好的方法來做到這一點嗎?

基礎上的答案,這裏是我做過什麼:從time.h中

time_t futur = time(NULL) + 120; 
while(condition) { 
    // do stuff 
    if(time(NULL) > futur) { 
    break; 
    } 
} 
+1

使用std :: chrono – Asesh

+1

最便攜的解決方案是使用['std :: chrono'](http://en.cppreference.com/w/cpp/chrono)提供的計時功能。 –

+5

[運行指定持續時間的函數:C++與](https://stackoverflow.com/questions/28768144/running-a-function-for-specified-duration-c-with-chrono) – LogicStuff

回答

3

最佳方式取決於你對什麼事情更看重解決方案。通常最好的方法是最簡單的方法。最簡單的解決方案是下面的算法:

  • 存儲當前時間
    • 如果當前時間大於存儲的時間+ 2分鐘
      • 退出循環
    • 更大
    • 做東西
2

使用時鐘()和計算時間的流逝,如:

timeStart = clock(); 
while (condition) 
{ 
    if ((clock() - timeStart)/CLOCKS_PER_SEC >= 120) // time in seconds 
     break; 
} 
+0

'clock()'測量** CPU **時間,聽起來不像「2分鐘後」正在尋找的那樣; 'std :: time()'測量掛鐘時間。並且'clock()'返回的值不一定以毫秒爲單位;你必須乘以'CLOCKS_PER_SEC'將其轉換爲秒。 –

+0

謝謝,我已經更新了我的答案。 –

+0

儘管我聲稱你必須乘法,但你已經明白了,除以'CLOCKS_PER_SEC'。