我正在使用boost::posix_time::ptime来衡量我的仿真运行时间以及其他方面的信息。

assuimg

boost::posix_time::ptime start, stop;
boost::posix_time::time_duration diff;
start = boost::posix_time::microsec_clock::local_time();
sleep(5);
stop = boost::posix_time::microsec_clock::local_time();
diff = stop - stop;

现在
std::cout << to_simple_string( diff ) << std::endl;

hh:mm:ss.ssssss格式返回时间,我也想使用ss.sssssss保留时间。

为此,我尝试了
boost::posix_time::time_duration::sec_type x = diff.total_seconds();

但这给了我ss格式的答案,seconds()返回返回归一化的秒数(0..60)。

我的问题是如何以ss.sssssss格式获得以秒为单位的仿真时间?

编辑

我能够做到:
 std::cout << diff.total_seconds() << "." <<  diff.fractional_seconds() << std::endl;

有什么优雅的东西可以画ss.sssssss吗?

最佳答案

total_seconds()返回未标准化为0..60s的long值。

因此,只需执行以下操作:

namespace bpt = boost::posix_time;

int main(int , char** )
{
    bpt::ptime start, stop;
    start = bpt::microsec_clock::local_time();
    sleep(62);
    stop = bpt::microsec_clock::local_time();

    bpt::time_duration dur = stop - start;

    long milliseconds = dur.total_milliseconds();

    std::cout << milliseconds << std::endl; // 62000

    // format output with boost::format
    boost::format output("%.2f");
    output % (milliseconds/1000.0);
    std::cout << output << std::endl; // 62.00
}

关于c++ - 以秒为单位获得boost::posix_time::time_duration,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9194226/

10-11 22:59