我想使用switch case
来确定regex
的价值,但似乎我不能这样做。我可以regex
成功使用if else
,如下所示:
if (regex_search(dic_char, lowercase)) {
cout << dic_char << endl;
} else if (regex_search(dic_char, uppercase)) {
// do something
} else {
cout << "Not characters." << endl;
}
但我想这样做:
switch (dic_char) {
case regex_search(dic_char, lowercase):
cout << dic_char << endl;
break;
case regex_search(dic_char, uppercase):
// do something
break;
default:
cout << "Not characters." << endl;
break;
}
有谁知道我这样做了吗?提前谢谢。
答案 0 :(得分:1)
答案 1 :(得分:0)
您必须在switch语句之外进行计算,并使用结果值打开。
在你的特定情况下,它没有多大意义,因为无论如何只有两个选择。
但更普遍的模式是:
result = do_calculation(p1,p2,..)
switch(result) {
case 1: ...
....
}
答案 2 :(得分:0)
您提供的if-else
版本和switch-case
版本在逻辑上是不同的。在前者中,条件是regex_search()
方法的返回值,而在以后的形式中,条件是dic_char'. To write
switch-case`版本的值,相当于前者,您可以遵循:
int res = regex_search(param); ///this method must return int/convertible to int value
switch(res)
{
case ...
}
您可以创建一个包含方法中有效返回值的enum
,并在case语句中使用它。