c++ - boost 定时器 24 小时格式

标签 c++ boost timer formatting duration

我正在使用boost::timer::cpu_timer计算算法的“用户处理时间”,如下所示:

boost::timer::cpu_timer timer;

boost::timer::nanosecond_type userTime = timer.elapsed().user;

我的问题是如何格式化 userTimeHH::MM::SS.mmm格式?我知道我可以自己编写代码,但我希望 Boost 能够提供一些实现此目的的方法。

我遇到了this example ,但它利用 boost::chrono::duration<Rep, Period> ,我不确定如何从 boost::timer::nanosecond_type 获取.

最佳答案

您需要将nanosecond_type转换为duration再转换为time_point

#include <iostream>
#include <boost/timer/timer.hpp>
#include <boost/chrono.hpp>
#include <boost/format.hpp>

namespace chrono = boost::chrono;

int main()
{
    // get now time & start timer
    chrono::system_clock::time_point start_time = chrono::system_clock::now();
    boost::timer::cpu_timer timer;

    for (int i = 0; i < 100000; ++i) {}

    // elapsed time conversion to time_point
    chrono::system_clock::time_point end_time
        = chrono::time_point_cast<chrono::system_clock::duration>(
                start_time + chrono::nanoseconds(timer.elapsed().user));

    // time_point conversion to time_t&tm
    std::time_t time = chrono::system_clock::to_time_t(end_time);
    std::tm* t = std::localtime(&time);

    // formatting
    std::size_t fractional_seconds = chrono::duration_cast<chrono::milliseconds>(
                                        end_time.time_since_epoch()
                                     ).count() % 1000;
    std::string s = (boost::format("%d:%d:%d.%d")
                        % t->tm_hour
                        % t->tm_min
                        % t->tm_sec
                        % fractional_seconds
                    ).str();
    std::cout << s << std::endl;
}

可能的输出:

10:42:55.445

关于c++ - boost 定时器 24 小时格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16151257/

相关文章:

c++ - 为什么 boost uniform_int_distribution 采用封闭范围(而不是半开放范围,遵循常见的 C++ 用法)?

c# - Windows 服务定期产生一个线程到最大值

c++ - 如何使用 GUI 的 XAML 创建 C++(/CX ?) _DESKTOP_ Windows 8 应用程序?

c++ - C++ 中的 Delphi Format() 模拟

c++ - 怎么睡到下周日

java - 如何编写一个计时器来跟踪 Java 中的多个事件?

timer - dart:在给定时间后停止收听流

c++ - 功能实现 : Processes or Threads division?

c++ - 读取数学运算时 cin 无法正常运行

C++ - 绑定(bind)函数