2012-04-30 44 views
1

我正在使用控制檯模式下使用Visual C++/CLR的項目。 如何以微秒獲得系統時鐘? 我想顯示hours:minutes:seconds:microseconds如何在C++中以微秒獲取系統時鐘?

下面的程序運作良好,但不與其他平臺兼容:

#include <stdio.h> 
#include <sys/time.h> 
int main() 
{ 
    struct timeval tv; 
    struct timezone tz; 
    struct tm *tm; 
    gettimeofday(&tv, &tz); 
    tm=localtime(&tv.tv_sec); 
    printf(" %d:%02d:%02d %ld \n", tm->tm_hour, tm->tm_min,tm->tm_sec, tv.tv_usec); 
    return 0; 
} 
+11

這是一個國際性的地方,所以請使用英語。 –

回答

1

你可以使用ptime microsec_clock::local_time()從升壓。

該文檔可用here

之後,您可以使用std::string to_iso_extended_string(ptime)以字符串的形式顯示返回的時間,或者您可以直接使用ptime的成員來自己格式化輸出。

反正它是值得一提的是:

Win32系統往往不能達到通過該API微秒的分辨率。如果更高的分辨率對您的應用至關重要,請測試您的平臺以查看實現的分辨率

所以我想這取決於你需要多麼精確的「時鐘」。

0

謝謝ereOn先生

我按照您的指示,我已經寫了這個代碼==>它的工作原理100%

#include <iostream> 
#include "boost/date_time/posix_time/posix_time.hpp" 

typedef boost::posix_time::ptime Time; 


int main(){ 

    int i; 
    Time t1; 

    for (int i=0;i<1000;i++) 
    { 

     t1=boost::posix_time::microsec_clock::local_time(); 
    std::cout << to_iso_extended_string(t1) << "\n"; 
    } 


    return 0; 
} 
+4

這不是如何工作。您應該_accept_ ereOn的回答,並且 - 如果您覺得需要完整的代碼清單 - _edit_ereOn的文章或使用評論功能請求ereOn添加代碼。 – jogojapan