ファイルに現在の時刻を保存してリロードするだけです。たとえば: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