将minutes::rep转换为hours::rep

convert minutes::rep to hours::rep

本文关键字:rep hours 转换 minutes      更新时间:2023-10-16

如何将std::chrono::minutes::rep类型值转换为小时表示?

#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
int main() {
    minutes::rep time = 4;
    std::cout << time;  // outputs as minutes, need in hours
    // duration cast doesn't seems to work here because it
    // needs minutes instead of minutes::rep probably
    return 0;
}
minutes::rep time = 4;
std::cout << time;  // outputs as minutes, need in hours

因为time只是一个(实现定义的)整数类型,它与minuteshours无关,并且不知道任何底层时间表示。

你想留在duration领域:

minutes time{4};
auto as_hours = std::duration_cast<hours>(time);
std::cout << as_hours.count(); // prints 0

,或者可能:

auto as_hours_dbl = std::duration_cast<duration<double, hours::period>>(time);
std::cout << as_hours_dbl.count(); // prints 0.0666667