3
我試圖確定自上次檢查以來是否在控制檯應用程序中經過了5秒鐘。我認爲我的邏輯稍微偏離了,我不知道如何解決它。確定是否已經過去5秒
我的lastCheck
變量在程序開始時首先爲0。它負責維持「舊時代」。
LastCheck
由CheckSeconds()
更新,這給它一個新的「舊時代」
如果LastCheck
等於1232323,而now
變量當前等於1227323,那麼我會知道5000毫秒過去了。 (實際上,這個數字比這大得多)
否則,我不想要發生任何事情,我想等到這五秒鐘真的過去了。
BACKEND
inline std::vector<int> CheckSeconds(int previous, int timeinseconds)
{
//check if a certain amount of seconds have passed.
int now = GetTickCount();
int timepassed = 0;
std::vector<int> trueandnewtime;
//if the current time minus the old time is greater than 5000, then that means more than 5000 milliseoncds passed.
//therefore the timepassed is true.
if (now - previous > 5000)
timepassed = 1;
trueandnewtime.push_back(timepassed);
trueandnewtime.push_back(now);
return trueandnewtime;
}
FRONTEND
storage = CheckSeconds(LastCheck, 5);
LastCheck = storage.at(1);
if (storage.at(0) == 1)
{
....blahblahblah.....
}
任何人都知道我做錯了嗎?我必須在某個地方出現邏輯錯誤,否則我會變笨。
另外值得注意的是,這段代碼是在一個while循環中,不斷運行在Sleep(60);
這是一個控制檯應用程序在momemnt。
感謝您的幫助。
「int」大到足以存儲'GetTickCount'的結果嗎? –
使用[#include](http://en.cppreference.com/w/cpp/chrono)中的函數檢查時間,並使用操作系統函數進行睡眠 –
int足夠大,否則會顯示奇怪的值,同時調試。 –