[英]switch case with string in c++
我想用字符串写一个开关盒。 我用了枚举,我这样写:
string enum { next = 0, prev = 1, ext = 2 }order;
while(true)
{
cin >> order;
switch(order)
{
case 0:
//do order0
break;
case 1 :
//do order 1
break;
case 2 :
//do order2
return;
break;
default:
cout << "Bad input";
break;
}
}
但是结果是这个错误:
错误C2236:意外的令牌“枚举”。 您忘记了“;”吗?
此错误的原因是什么?
还有其他方法可以用字符串编写开关吗?
不要和语言打架。 众所周知,您无法在C ++中打开字符串。
使用if
, else if
使用if
。
您确实会不时看到各种尝试。 地图,枚举和哈希是我可以想到的三个。 但是他们只是混淆。 您可能需要break
语句,这会使情况进一步恶化。 (如果遵循将是有用的,则相应地构造if
块)。
您的;
错误是由于string enum
在语法上无效。
这是什么 :-
string enum {
next = 0,
prev = 1,
ext = 2
}order;
它应该是:-
enum Mydata {
next = 0,
prev = 1,
ext = 2
};
错误来自:
string enum {
next = 0,
prev = 1,
ext = 2
}order;
这是无效的语法,枚举和字符串都是类型,您不能使用其他保留关键字创建该类型的实例。
相反,您想要这样声明枚举:
enum order{
next = 0,
prev = 1,
ext = 2
};
但是很有可能您真的不想以这种方式解决问题。 一种简单的方法是将条件语句与if
语句或什至std::map
使用。
cin >> order;
if(order == "0"){
}else if( order == "1"){
}else{
}
原因是因为“字符串枚举”无效。 这是一个例子:
enum Orders{
next=0,
prev=1,
ext=2
};
while(true)
{
int oder=-1;
cin>>order;
switch(order)
{
case next:
//do something
break;
case prev:
//do something else
break;
case ext:
//something else
break;
default:
cout << "error\n";
break;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.