这个问题是因为你可能正在使用的 GCC 版本不支持 std::put_time
。std::put_time
是 C++11 中引入的一个特性,但是在 GCC 4.9 之前的版本中并没有实现这个特性。
你可以通过以下两种方式解决这个问题:
-
升级你的 GCC 到 4.9 或者更高的版本。你可以通过运行
gcc --version
来检查你当前的 GCC 版本。 -
如果你不能升级你的 GCC,你可以使用
strftime
来代替std::put_time
。以下是一个例子:
#include <iostream>
#include <ctime>
#include <chrono>
int main() {
auto now = std::chrono::system_clock::now();
auto now_c = std::chrono::system_clock::to_time_t(now);
char buf[100] = {0};
if (std::strftime(buf, sizeof(buf), "%c", std::localtime(&now_c))) {
std::cout << buf << "\n";
}
return 0;
}
这段代码会打印出当前的日期和时间,格式与 std::put_time(std::localtime(&time), "%c")
相同。