2016-11-09 10 views
1

ファイルからいくつかの情報をキャッシュしています。ファイルの内容が変更されているかどうか定期的にチェックして、必要に応じて新しいコンテンツ。C++ファイルの最終更新時刻を確認する方法

これは、C++でファイルの最終変更時刻を取得する方法があるのだろうかと私は思っています。

+0

古いCの 'stat'呼び出しに何が問題なのですか? –

+0

@ Jean-FrançoisFabre、それはUNIXシステムコールですので、クロスプラットフォームではありません – SingerOfTheFall

+0

@SingerOfTheFallだから私は答えませんでした。 –

答えて

11

言語固有の方法はありませんが、OSは必要な機能を提供します。

UNIXシステムを使用している場合は、statコールが必要です。 Visual Studioのウィンドウには、同等の_statコールが用意されています。そこでここでは、両方のために働くだろうコードです:

#include <sys/types.h> 
    #include <sys/stat.h> 
    #ifndef WIN32 
    #include <unistd.h> 
    #endif 

    #ifdef WIN32 
    #define stat _stat 
    #endif 

    auto filename = "/path/to/file"; 
    struct stat result; 
    if(stat(filename.c_str(), &result)==0) 
    { 
     auto mod_time = result.st_mtim; 
     ... 
    } 
+0

UNIXとWindowsの両方で使えるものは何もありません。 :/ –

+0

Windowsサポートを追加するように変更されました – Smeeheey

3

あなたはそのためにブーストのlast_write_timeを使用することができます。ブーストはクロスプラットフォームです。

Hereのチュートリアルのリンクです。

Boostには、あらゆる種類のファイル名で機能するという利点があります。したがって、非ASCIIファイル名が処理されます。

関連する問題