Я пытаюсь просто сохранить и перезагрузить текущее время в файле. Например:Сохранение и загрузка std :: chrono :: time_point в файл
std::ifstream ifs(solar_system_cache_file,
std::ios::in | std::ios::binary);
if (!ifs.is_open()) {
return false;
}
std::chrono::system_clock::time_point cache_valid_time;
ifs >> cache_valid_time;
if (std::chrono::system_clock::now() < cache_valid_time) {
std::cout << "Cache is VALID." << std::endl;
}
ifs.close();
return true;
и
std::ofstream ofs(solar_system_cache_file,
std::ios::out | std::ios::binary);
if (!ofs.is_open())
return;
ofs << std::chrono::system_clock::now() + 12h;
ofs.close();
Такого рода вещи не сложно, но я смотрел вокруг в течение нескольких часов, и я не могу найти нужную информацию. Есть пример того, как делать с использованием duration_cast<long, std::milli>
, но std::chrono
чрезвычайно изогнут и трудно ориентироваться (и переваривать).
В двух словах, я считаю, что нужно направить текущее время на long
(или на какой-то аналогичный большой тип) и сохранить это. При десериализации времени мне просто нужно вернуть его обратно в time_point
. Это звучит достаточно легко, но я не могу этого сделать.
И наконец, просто прокладка трубопровода в fstream
дает обычную ошибку invalid operands to binary expression
.
Любая помощь приветствуется или ссылки на хорошие учебники/руководства. Спасибо
Вы хотите, чтобы сериализованный формат был доступен для человека? – ildjarn
Нет, это в двоичной форме. Я отправил свое решение в качестве ответа, не стесняйтесь, конечно, задуматься над проблемой :) – scx