例如,我的情况:
我正在输入“0”,“1”,“true”或“false”。 (任何状况之下)
在性能,代码读取,任何基本最佳实践方面,首选什么:

bool func(string param)
{
    string lowerCase = param;
    to_lower(lowerCase);
    if (lowerCase == "0" || lowerCase == "false")
    {
        return false;
    }
    if (lowerCase == "1" || lowerCase == "true")
    {
        return true;
    }
    throw ....
}

要么:
bool func(string param)
{
    string lowerCase = param;
    to_lower(lowerCase);
    regex rxTrue  ("1|true");
    regex rxFalse ("0|false");

    if (regex_match(lowerCase, rxTrue)
    {
        return true;
    }
    if (regex_match(lowerCase, rxFalse)
    {
        return false;
    }
    throw ....
}

最佳答案

第二个更清晰,更容易扩展(例如:接受"yes""no"或前缀,以及"1|t(?:rue)?)""0|f(?:alse)?"。关于性能,第二个可以(和
应该通过声明regex static使速度大大提高
(以及const),例如:

static regex const rxTrue ( "1|true" , regex_constants::icase );
static regex const rxFalse( "0|false", regex_constants::icase );

还要注意,通过指定不区分大小写,您不必
将输入转换为小写。

09-15 11:48