Я знаю, как получить текущее время с точностью до микросекунды в Linux, используя gettimeofday(). Однако он не переносим и не работает на MinGW. Как получить ту же функциональность с С++ 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. Что здесь не так?
auto now = std::chrono::system_clock::now();
Вы можете извлекать в любом разрешении. - person Red Alert   schedule 26.03.2015ns
, не дает вам разрешенияns
. - person Yakk - Adam Nevraumont   schedule 26.03.2015ns
. Проблема с использованием часов HR заключается в том, что они не гарантированно привязаны к системным часам (они выберутsteady_clock
, если они имеют более высокое разрешение), что делает их ненадежными для получения времени суток. - person Red Alert   schedule 26.03.2015