C++ C++;流不';不要改变时间

C++ C++;流不';不要改变时间,c++,touch,fstream,ofstream,C++,Touch,Fstream,Ofstream,基本上,我想做与系统调用touch相同的事情(如果文件不存在,则创建该文件,如果存在,则更新其修改时间戳) 如果文件不存在,这将创建该文件。但它不会改变修改时间 std::string file = ...; std::ofstream(file.c_str(), std::ios::out); 如果文件不存在,它将创建该文件;如果存在,它将更新修改时间;如果文件存在,它还将截断该文件 那么我该如何处理一个文件呢?Kerrek SB已经发布了解决方案,但不幸的是,答案是a而不是a(我宁愿接受他

基本上,我想做与系统调用touch相同的事情(如果文件不存在,则创建该文件,如果存在,则更新其修改时间戳)

如果文件不存在,这将创建该文件。但它不会改变修改时间

std::string file = ...;
std::ofstream(file.c_str(), std::ios::out);
如果文件不存在,它将创建该文件;如果存在,它将更新修改时间;如果文件存在,它还将截断该文件


那么我该如何处理一个文件呢?

Kerrek SB已经发布了解决方案,但不幸的是,答案是a而不是a(我宁愿接受他的答案)

我在以下方面取得了成功:

#包括
...
std::string path=“/path/to/my/file”;
布尔成功=!utime(path.c_str(),0);

< David Schwartz >纳秒精度。

这将不是由C++语言本身定义的。您可以确定,在某些平台上,该程序可以按预期工作,因此我们需要更具体地了解您正在使用什么。ofstream类if用于读取/写入文件。它不提供任何文件属性修改功能。您需要基于您的平台进行系统调用这可能会对您有所帮助,
utime(2)
似乎是Posix的答案……在Posix.1-2008系统上,您需要。
std::string file = ...;
std::ofstream(file.c_str(), std::ios::out);
#include <utime.h>
...
std::string path = "/path/to/my/file";
bool success = !utime(path.c_str(), 0);