Как преобразовать `std :: fileystem :: file_time_type` в строку с помощью GCC 9C++

Программы на C++. Форум разработчиков
Anonymous
Как преобразовать `std :: fileystem :: file_time_type` в строку с помощью GCC 9

Сообщение Anonymous »

Я пытаюсь отформатировать время изменения файла в качестве строки (UTC). Следующий код компилируется с GCC 8, но не GCC 9. < /p>

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 

namespace fs = std::filesystem;

int main() {
fs::file_time_type file_time = fs::last_write_time(__FILE__);
std::time_t tt = decltype(file_time)::clock::to_time_t(file_time);
std::tm *gmt = std::gmtime(&tt);
std::stringstream buffer;
buffer , используя C ++ 17 и C ++ 20, но ни один из них не работал. < /p>

$ g++-9 -std=c++2a -Wall -Wextra -lstdc++fs file_time_type.cpp

file_time_type.cpp: In function ‘int main()’:
file_time_type.cpp:12:50: error: ‘to_time_t’ is not a member of ‘std::chrono::time_point::clock’ {aka ‘std::filesystem::__file_clock’}
12 |     std::time_t tt = decltype(file_time)::clock::to_time_t(file_time);
|                                                  ^~~~~~~~~
Пример на https://en.cppreference.com/w/cpp/files ... _time_type упоминает, что он не работает на GCC 9, потому что C ++ 20 допускает портативный вывод, но я не знаю, как его работать. Разве это не должно работать с GCC 9, если я просто не использую C ++ 20?>

Подробнее здесь: https://stackoverflow.com/questions/567 ... sing-gcc-9

Вернуться в «C++»