前言:在C++ 中 switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。
1:通过枚举来实现switch 语句中的 expression
// 定义信号枚举常量
enum SIGNALSET
{
RED, YELLOW, BLACK, WHITE,BLUE
};
void enum_iterator() {
for (int i = RED; i <= WHITE; i++)
{
// switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。
switch (i)
{
case RED:
cout << "RED index= " << i << endl;
break;
case YELLOW:
cout << "YELLOW index= " << i << endl;
break;
case BLACK:
cout << "BLACK index= " << i << endl;
break;
case WHITE:
cout << "BLACK index= " << i << endl;
break;
default:
break;
}
}
}
int main()
{
enum_iterator();
}
打印结果
RED index= 0
YELLOW index= 1
BLACK index= 2
BLACK index= 3
2:通过map的方式来实现switch 语句中的 expression
map<string, int> control_param = {
{ "RED", 1 },
{ "YELLOW", 2 },
{ "BLACK",3 },
{ "WHITE",4 },
{ "BLUE",5 }
};
/**
如果语法中大量使用if…else语句会造成代码臃肿,if语句C++语法中switch…case中case只能是整形变量,
这里提供了一种思路,用map方法使健与值对应,这样字符串string类型与int型便对应上了,便可以实现匹配string。
*/
void Func_Mapa(int* key, const string value) {
// [] 实现的就是从一个map中查找一个key,如果找到就返回对应的内容,如果没有找到,则返回空字符串
int caseKey = control_param[value];
switch (caseKey)
{
case 1:
*key = 1;
break;
case 2:
*key = 22;
break;
case 3:
*key = 3;
break;
case 4:
*key = 4;
break;
case 5:
*key = 55;
break;
default:
break;
}
cout << "switch key: " << *key << endl;
}
int main()
{
int testKey = 0;
Func_Mapa(&testKey, "YELLOW");
}
打印结果
switch key: 22
版权声明:本文为u013620306原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。