C++ get boost::posix_时间::时间_持续时间(秒)

C++ get boost::posix_时间::时间_持续时间(秒),c++,boost,C++,Boost,我正在使用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();

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

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

我的问题是,如何以秒为单位获得ss.SSSS格式的模拟时间

编辑

我能够做到:

 std::cout << diff.total_seconds() << "." <<  diff.fractional_seconds() << std::endl;
std::cout
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
}
namespace bpt=boost::posix_time;
int main(int,char**)
{
bpt::ptime开始、停止;
开始=bpt::微秒时钟::本地时间();
睡眠(62);
停止=bpt::微秒时钟::本地时间();
bpt::time_dur=停止-启动;
长毫秒=dur.total_毫秒();

std::cout我看到的最直接的方式是这样的输出,剩下的时间是按照纳布尔克的帖子进行计算的:

#include <iomanip>
double dseconds = dur.total_milliseconds() / 1000. ;

std::cout << std::setiosflags(std::ios::fixed) << std::setprecision(3);
std::cout << dseconds << std::endl;
#包括
双D秒=dur.total_毫秒()/1000;
std::cout
//无论你有什么时间(这里是1秒)
boost::posix_time::ptime pt=boost::posix_time::from_time_t(1);
//减去0==转换为持续时间
boost::posix_time::time_dur=pt-boost::posix_time::from_time_t(0);
//导致ms
uint64_t ms=过程总毫秒();
//产生usec
uint64_t us=过程总微秒();
//结果以秒计
uint64_t s=过程总秒数();

std::非常感谢您的重播。根据您的示例,我想要以下输出:62.0000(ss.ssssss)。可能吗?@Eagle:我使用
boost::format
添加了一个示例,其中包含您所需的输出。希望有帮助。成功了,您是对的。我自己尝试过,但忘记了“.”所以我得到了整数
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
}
#include <iomanip>
double dseconds = dur.total_milliseconds() / 1000. ;

std::cout << std::setiosflags(std::ios::fixed) << std::setprecision(3);
std::cout << dseconds << std::endl;
// whatever time you have (here 1second)
boost::posix_time::ptime pt = boost::posix_time::from_time_t( 1 ); 
// subtract 0 == cast to duration
boost::posix_time::time_duration dur = pt - boost::posix_time::from_time_t(0); 
// result in ms
uint64_t ms = dur.total_milliseconds();
// result in usec
uint64_t us = dur.total_microseconds();
// result in sec
uint64_t  s = dur.total_seconds();
std::cout << "s = " << s << ", ms = " << ms << ", us = " << us << std::endl;