我正在使用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/