在C ++中设置文件修改时间的便携方式?

时间:2016-03-23 13:11:05

标签: c++ c++11

我正在编写一个C ++应用程序,它至少需要在Ubuntu 15,FreeBSD 11,MacOS X和Windows 7(使用GCC,clang和MSVC编译)之间移植。所有这些系统都具有至少具有修改日期/时间的文件概念。

问题是:有没有办法使用可以在所有这些系统上运行的单个C ++代码设置文件修改时间

注意:通过设置文件修改时间,我的意思是将其设置为任何指定值,当前时间(即不是触摸功能)。

2 个答案:

答案 0 :(得分:6)

使用boost::filesystem,您可以将此功能用于get/set the time

void last_write_time(const path& p, const std::time_t new_time);

某些编译器也可以使用experimentalgcc等某些编译的msvc功能。它们使用相同的API但不同的实验名称空间因此,如果您不想使用boost,并且只要它尚未集成到标准中,您可以使用条件编译和using语句使其可移植。

答案 1 :(得分:4)

C ++标准库(还)没有任何文件概念(until filesystem will become part of the Standard Library,这可能发生在C++17)。目前,您需要依赖某些跨平台库,例如boost::filesystemQt