在复制的目录last_write_time不匹配(last_write_time Mismatch

2019-10-28 21:24发布

我不确定这是否是一个平台的差异或实施差别。 我希望有人能帮助我阐明光。 鉴于这样的代码:

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

这似乎是fooftimebarftime都是平等的,但是当我检查变量在Visual Studio调试它们含有更高的精度比他们输出, 并且他们在扩展精度不同 。 有人可以帮助我明白的地方这里的细分?

文章来源: last_write_time Mismatch on Copied Directories