检查向量args的大小,并将std :: chrono :: duration 转换为int

问题描述 投票:-1回答:1

所以,我正在写一个命令管理器。你在哪里传递参数。

CMD(test)
{
    std::vector<std::string> arg;
    split_(argument, arg); // Split argument don't matter..

    if( arg.size() >= 2 && arg[2].empty() )
    {
        Error("At least 2 arguments")
        return;
    }
}

我无法进行检查,如果我在命令中写入了1个参数。它没有达到if。我如何检查是否向该命令行提供了2个参数?


第二个问题,我想在参数列表中转换std :: chrono :: duration。。

using time_duration = std::chrono::duration<double>;
class FOO
{
public:
    void Func( time_duration time);
};

我想使用cmd_line为Func传递参数。所以我确实喜欢这样

CMD(test)
{
    std::vector<std::string> arg;
    split_(argument, arg); // Split argument don't matter..

    if( arg.size() >= 2 && arg[2].empty() )
    {
        Error("At least 2 arguments")
        return;
    }


    constexpr std::chrono::duration<double> xx = std::stod(arg[1]);

    Func(xx);
}

当我尝试编译时,我收到转换错误。

conversion from 'double' to non-scalar type 'const std::chrono::duration<double>' requested

如何使用上述示例将std :: chrono :: durationargument传递给Func?

所以,我正在写一个命令管理器。您在哪里传递参数。 CMD(test){std :: vector <:string>arg; split_(参数,arg); //分割参数无关紧要.. if(arg.size()> = 2 ...

c++ chrono
1个回答
0
投票

对于第一部分,您只需要翻转支票,即

if( arg.size() < 2 )
    {
        Error("At least 2 arguments")
        return;
    }
© www.soinside.com 2019 - 2024. All rights reserved.