我知道如何使用gettimeofday()在linux下获得微秒精度的当前时间。但是它不便携,不适用于MinGW。如何使用C ++ 11获得相同的功能?
#include <sys/time.h>
#include <cstdio>
int main(){
timeval curTime;
gettimeofday(&curTime, NULL);
unsigned long micro = curTime.tv_usec;
printf("micro is: %lu\n", micro);
char buffer [30];
//localtime is not thread safe
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", localtime((const time_t*)&curTime.tv_sec));
printf("buffer is: %s\n", buffer);
char currentTime2[30] = "";
sprintf(currentTime2, "%s.%06Lu", buffer, micro);
printf("currenttime is: %s\n", currentTime2);
}
它在Linux中运行良好,并且在MinGW下不打印缓冲区。这有什么不对?
答案 0 :(得分:2)
std::chrono::high_resolution_clock
。它是便携式的,但可能很糟糕。持续时间高精度:你甚至可以问它声称有多精确,但这可能不值得信赖。
boost
具有可移植的时钟和时间库,可能更可靠。
答案 1 :(得分:2)
你试过std :: chrono :: high_resolution_clock吗? 你可能会发现这个article对于内部工作是一个有用的参考 C ++ 11 chrono库。