我正在编写一个C ++应用程序,它至少需要在Ubuntu 15,FreeBSD 11,MacOS X和Windows 7(使用GCC,clang和MSVC编译)之间移植。所有这些系统都具有至少具有修改日期/时间的文件概念。
问题是:有没有办法使用可以在所有这些系统上运行的单个C ++代码设置文件修改时间?
注意:通过设置文件修改时间,我的意思是将其设置为任何指定值,不当前时间(即不是触摸功能)。
答案 0 :(得分:6)
使用boost::filesystem
,您可以将此功能用于get/set the time:
void last_write_time(const path& p, const std::time_t new_time);
某些编译器也可以使用experimental或gcc等某些编译的msvc功能。它们使用相同的API但不同的实验名称空间因此,如果您不想使用boost,并且只要它尚未集成到标准中,您可以使用条件编译和using语句使其可移植。
答案 1 :(得分:4)
C ++标准库(还)没有任何文件概念(until filesystem will become part of the Standard Library,这可能发生在C++17)。目前,您需要依赖某些跨平台库,例如boost::filesystem或Qt。