C++ 如何使用此库将秒转换为分钟?

C++ 如何使用此库将秒转换为分钟?,c++,c++14,units-of-measurement,C++,C++14,Units Of Measurement,我有一个使用这个流行的,但我正在努力使用它转换从秒到分钟 下面的代码 #include <iostream> #include "units.h" int main(int argc, const char * argv[]) { { long double one = 1.0; units::time::second_t seconds; units::time::minute_t minutes(one);

我有一个使用这个流行的,但我正在努力使用它转换从秒到分钟

下面的代码

#include <iostream>

#include "units.h"

int main(int argc, const char * argv[])
{
    {
        long double one = 1.0;

        units::time::second_t seconds;
        units::time::minute_t minutes(one);

        seconds = minutes;

        std::cout << "1 minute is " << seconds << std::endl;
    }


    {
        long double one = 1.0;

        units::time::second_t seconds(one);
        units::time::minute_t minutes;

        minutes = seconds;

        std::cout << "1 second is " << minutes << std::endl;
    }

    return 0;
}
然而,我本以为它会产生

1 minute is 60 s
1 second is .016666667 m

我不知道您正在使用的库,但C++11添加了
std::chrono::duration
类,该类似乎可以执行您想要的操作:

#include <chrono>
#include <iostream>
int main()
{
    {
        std::chrono::minutes minutes(1);
        std::chrono::seconds seconds;

        seconds = minutes;

        std::cout << "1 minute is " << seconds.count() << std::endl;
    }

    {
        std::chrono::seconds seconds(1);
        using fMinutes = std::chrono::duration<float, std::chrono::minutes::period>;
        fMinutes minutes = seconds;

        std::cout << "1 second is " << minutes.count() << std::endl;
    }

    return 0;
}

我不知道您正在使用的库,但C++11添加了
std::chrono::duration
类,该类似乎可以执行您想要的操作:

#include <chrono>
#include <iostream>
int main()
{
    {
        std::chrono::minutes minutes(1);
        std::chrono::seconds seconds;

        seconds = minutes;

        std::cout << "1 minute is " << seconds.count() << std::endl;
    }

    {
        std::chrono::seconds seconds(1);
        using fMinutes = std::chrono::duration<float, std::chrono::minutes::period>;
        fMinutes minutes = seconds;

        std::cout << "1 second is " << minutes.count() << std::endl;
    }

    return 0;
}

库提供了一个
units::convert
方法,请检查文档

下面是一个工作片段:

    long double one = 1.0;

    units::time::second_t seconds(one);
    units::time::minute_t minutes;

    minutes = seconds;

    std::cout << "1 second is " << minutes << std::endl;
    std::cout << "1 second is "
              << units::convert<units::time::seconds, units::time::minutes>(seconds)
              << std::endl;
长双一=1.0;
单位:时间:秒(一);
单位::时间::分钟\u t分钟;
分=秒;

std::cout库提供了一个
units::convert
方法,请检查文档

下面是一个工作片段:

    long double one = 1.0;

    units::time::second_t seconds(one);
    units::time::minute_t minutes;

    minutes = seconds;

    std::cout << "1 second is " << minutes << std::endl;
    std::cout << "1 second is "
              << units::convert<units::time::seconds, units::time::minutes>(seconds)
              << std::endl;
长双一=1.0;
单位:时间:秒(一);
单位::时间::分钟\u t分钟;
分=秒;

我很欣赏这个答案,但是我使用这个库是因为它支持许多不同的单元类型。我用时间作为例子。我很欣赏这个答案,但我使用这个库是因为它支持许多不同的单元类型。我用时间作为例子,太棒了!是bug阻止了我的方法工作吗?可能是因为
units::time::minute\t
打印总是以秒表示。太好了!是bug阻止了我的方法工作吗?可能是因为
units::time::minute\t
打印总是以秒表示。