例如,我的情况:
我正在输入“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 );
还要注意,通过指定不区分大小写,您不必
将输入转换为小写。