我不确定这是否是一个平台的差异或实施差别。 我希望有人能帮助我阐明光。 鉴于这样的代码:
filesystem::path foo("foo");
filesystem::path bar("bar");
filesystem::create_directories(foo);
filesystem::copy(foo, bar);
const auto fooftime = filesystem::last_write_time(foo);
const auto barftime = filesystem::last_write_time(bar);
const auto foocftime = decltype(fooftime)::clock::to_time_t(fooftime);
const auto barcftime = decltype(barftime)::clock::to_time_t(barftime);
cout << '(' << foocftime << ')' << asctime(localtime(&foocftime)) << '(' << barcftime << ')' << asctime(localtime(&barcftime)) << (fooftime == barftime) << endl;
GCC输出 :
(1513798777)星期三12月20日19时39分37秒2017
(1513798777)星期三12月20日19时39分37秒2017
1
但是,Visual Studio将输出:
(1513798819)星期三12月20日14点40分一十九秒2017
(1513798819)星期三12月20日14点40分一十九秒2017
0
这似乎是fooftime
和barftime
都是平等的,但是当我检查变量在Visual Studio调试它们含有更高的精度比他们输出, 并且他们在扩展精度不同 。 有人可以帮助我明白的地方这里的细分?