gpt4 book ai didi

c++ - 以秒为单位获取 boost::posix_time::time_duration

转载 作者:可可西里 更新时间:2023-11-01 16:29:57 27 4
gpt4 key购买 nike

我正在使用 boost::posix_time::ptime 来测量我的模拟运行时间和其他东西。

假设

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.ssssss 格式的模拟时间(以秒为单位)?

编辑

我能够做到:

 std::cout << diff.total_seconds() << "." <<  diff.fractional_seconds() << std::endl;

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

最佳答案

total_seconds() 返回一个 long 值,该值未标准化为 0..60s。

所以就这样做:

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com