1

コンソール モードで Visual C++ /CLR を使用するプロジェクトに取り組んでいます。システムクロックをマイクロ秒単位で取得するにはどうすればよいですか? 表示したいhours:minutes:seconds:microseconds

次のプログラムは問題なく動作しますが、他のプラットフォームとは互換性がありません:

#include <stdio.h>
#include <sys/time.h>
int main()
{
     struct timeval tv;
     struct timezone tz;
     struct tm *tm;
     gettimeofday(&tv, &tz);
     tm=localtime(&tv.tv_sec);
     printf(" %d:%02d:%02d %ld \n", tm->tm_hour, tm->tm_min,tm->tm_sec, tv.tv_usec);
     return 0;
}
4

2 に答える 2

1

ptime microsec_clock::local_time()Boostから使えます。

ドキュメントはこちらから入手できます。

その後、 を使用std::string to_iso_extended_string(ptime)して返された時間を文字列として表示したり、 のメンバーをptime直接使用して出力を自分でフォーマットしたりできます。

とにかく、次のことに注意してください。

Win32 システムでは、この API を介してマイクロ秒の解像度を達成できないことがよくあります。アプリケーションにとってより高い解像度が重要な場合は、プラットフォームをテストして、達成された解像度を確認してください。

したがって、「時計」がどれだけ正確であるかに依存すると思います。

于 2012-04-30T11:34:42.407 に答える
0

エレオン先生ありがとう

私はあなたの指示に従い、このコードを書きました ==> 100% 動作します

#include <iostream>
#include "boost/date_time/posix_time/posix_time.hpp" 

typedef boost::posix_time::ptime Time;


int main (){

    int i;
    Time t1;

    for (int i=0;i<1000;i++)
    {

         t1=boost::posix_time::microsec_clock::local_time();
     std::cout << to_iso_extended_string(t1) << "\n";
    }


    return 0;
}
于 2012-05-01T21:13:04.870 に答える