从stat(系统调用)格式化mtime

时间:2012-05-24 00:33:43

标签: c++ struct stat strftime time-t

所以我正在编写一个程序来模仿linux中的“find”命令。我已经完成了所有工作,但我无法弄清楚如何从ctime,mtime和atime格式化字符串。

我知道参数是struct time_t,但我找不到将它转换为可形式化的字符串。

我的部分内容如下。由于错误“错误:无法将'__time_t'转换为'const tm'以将参数'4'转换为'size_t strftime(char *,size_t,const char *,const tm *)'

理想情况下,我想要这样的事情:

cout << strftime(mBuf, 18, "%I:%M:%S-%m/%d/%y", (&sb.st_mtime));

其中sb是stat结构。它应该以以下格式打印:HH:MM:SS-MM / DD / YY

我确信答案很简单,但我无法理解。

1 个答案:

答案 0 :(得分:0)

您必须分几步完成:

struct tm *mytm = localtime(&sb.st_mtime);
strftime(mBuf, 18, "%I:%M:%S-%m/%d/%y", mytm);
cout << mBuf;

当然,对localtimestrftime的通话可以合并为一个电话:

strftime(mBuf, 18, "%I:%M:%S-%m/%d/%y", localtime(&sb.st_mtime));