所以我有一个函数,我已经用它来生成时间戳字符串:
" YYYY-MM-DD HH:MM :: SS.mmm"。但是它使用较旧的std :: time_t和std :: strftime(),std :: localtime()等部分......
std :: localtime发出警告说它可能不安全并且使用std :: localtime_s,但是MSVS似乎没有那个功能(或者是它!?)...但无论如何,我想做什么试图只使用较新的计时库。
这是我到目前为止所做的:
std::string get_time_stamp()
{
char buf[50] = {0};
// Get the current time
auto now = std::chrono::system_clock::now();
// Format the date/time
std::time_t now_tm_t = std::chrono::system_clock::to_time(now);
std::strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", std::localtime(&now_tm_t);
// Get the milliseconds
int millis = std::chrono::time_point_cast<std::chrono::milliseconds>(now).time_since_epoch().count() % 100;
// Note use snprintf for gcc
sprintf_s(buf + strlen(buf), sizeof(buf) - strlen(buf), ".%03d", millis);
return buf;
}
我可以使这个更干净,只使用c ++ 11 chrono(也许不是char数组)并避免像strftime和localtime等函数......?我发现std :: chrono使用起来有点尴尬 - 简单的东西很简单,但在那之后它有点令人难以置信......