gpt4 book ai didi

c++ - 将 std::duration 转换为人类可读的时间

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:11:08 25 4
gpt4 key购买 nike

是否有标准实现将 std::duration 打印为人类可读的持续时间?

steady_clock::time_point start = steady_clock::now();
doSomeFoo();
steady_clock::time_point end = steady_clock::now();
std::cout << "Operation took "
<< may_be_std::theMagic(start-end) << std::endl;

应该打印类似的东西:

"Operation took 10d:15h:12m:14:s"

或类似的东西。

最佳答案

同意没有标准实现。以下是您自己编写的方法:

#include <iostream>
#include <iomanip>
#include <chrono>

std::ostream&
display(std::ostream& os, std::chrono::nanoseconds ns)
{
using namespace std;
using namespace std::chrono;
typedef duration<int, ratio<86400>> days;
char fill = os.fill();
os.fill('0');
auto d = duration_cast<days>(ns);
ns -= d;
auto h = duration_cast<hours>(ns);
ns -= h;
auto m = duration_cast<minutes>(ns);
ns -= m;
auto s = duration_cast<seconds>(ns);
os << setw(2) << d.count() << "d:"
<< setw(2) << h.count() << "h:"
<< setw(2) << m.count() << "m:"
<< setw(2) << s.count() << 's';
os.fill(fill);
return os;
};

int
main()
{
std::cout << "Operation took ";
display(std::cout, std::chrono::microseconds(918734000000));
std::cout << '\n';
}

Operation took 10d:15h:12m:14s

关于c++ - 将 std::duration 转换为人类可读的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22590821/

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