Форматирование mtime из stat(системный вызов)

Итак, я пишу программу, имитирующую команду «найти» в Linux. Я обо всем позаботился, но не могу понять, как отформатировать строку из 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 — структура статистики. Он должен быть напечатан в формате: ЧЧ:ММ:СС-ММ/ДД/ГГ.

Я уверен, что ответ прост, но я не могу понять.


person twsmale    schedule 24.05.2012    source источник


Ответы (1)


Вы должны сделать это в несколько шагов:

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

Конечно, вызов localtime и strftime можно объединить в один вызов:

strftime(mBuf, 18, "%I:%M:%S-%m/%d/%y", localtime(&sb.st_mtime));
person Some programmer dude    schedule 24.05.2012