2015-01-08 94 views
0

我不確定這是否爲真,但在我的代碼中,我打印的是一個名爲currentTime的變量的值,它記錄了秒數自應用程序運行。當前時間變量記錄爲 time(NULL) - epocTime 其中epocTime在代碼開始時設置爲時間(NULL)。 即使currentTime是double類型,它會在我的應用程序運行時輸出爲1.0000,2.0000,3.0000等等。但它從來沒有非整數值。是否有可能改變我記錄時間的方式,以便毫秒也被記錄下來,例如有一個參數可以讓time()方法記錄毫秒。C++中的時間(NULL)只計算秒數,而不是毫秒

+5

http://en.cppreference.com/w/cpp/chrono – Cthulhu

+1

'時間()'給你的整數。不管你分配什麼,並將其轉換爲。它不能神奇地獲得微秒的分辨率。 –

回答

1

time()幾乎總是返回一個整數類型,其中包含自1970年1月1日以來的秒數。使用time()本身可以做的事情本身並沒有太多可以改變這一點。

相反,你應該看看std::chrono::steady_clock

#include <chrono> 
#include <thread> 
#include <iostream> 

int main() { 
    auto start = std::chrono::steady_clock::now(); 

    // Some work 
    std::this_thread::sleep_for(std::chrono::seconds(1)); 

    auto end = std::chrono::steady_clock::now(); 
    auto elapsed = end - start; 

    std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(elapsed).count() << " milliseconds\n"; 
} 
+1

_「不多」_或者實際上什麼也沒有。 [你的'std :: clock'建議簡直是錯誤的](http://kera.name/articles/2011/03/tomalaks-tuesday-tip-11-sleep-your-way-to-success/)。 –

+1

@LightnessRacesinOrbit:我總是忘記哪些舊時鐘會返回掛牆時間或CPU時間,以及在您的進程切換進程時它們是否失敗。所以讓我們刪除答案的那部分。不過謝謝你們的聯繫,而且這些日子我可能會把它記錄下來。 –