没有什么好办法,只有用switch。将输入的值储存到一个string变量中,然后swtich+case一长串
用enum没有意义的,因为enum在c++里经过编译后实际上就是多个const整型,你的定义其实差不多相当于
const int ROCK=0;
const int SCISSOR=1;
const int CLOTH=2;
……
当然还是有一定差距的,就是在于你可以定义一个变量,内容限定为enum中的这些整型的值。然后,就我所知,没有其他的差别了
所以完全没办法把他们关联到字符串上。
1 枚举类型定义的一般形式为:
enum 枚举名{ 枚举值表 };
在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。
例如:
该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天中的某一天。
2 枚举变量的说明
如同结构体(struct)和共用体(union)一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。
扩展资料:
ENUM其他含义:
ENUM是电话号码映射(E164 Number URI Mapping)的缩写。这个缩写的后面隐藏着一个伟大的创意:即通过最好和最廉价的路由途径,可以在世界任何地点使用同一个电话号码。可以象注册域名一样注册ENUM号码。
目前有许多注册机构和VOIP服务商免费提供这类服务。例如,如果来电方是传真机,可以将此规定到一个不同的路由途径上。ENUM不需要来电方必须使用电话机。另指C/C++程序语言中的一种数据类型。
参考资料来源:百度百科-ENUM
参考资料来源:百度百科-ENUM
int a=1;
Url u=(Url)a;
var a = typeof(Url)GetField(uToString())GetCustomAttributes(typeof(DescriptionAttribute), false)FirstOrDefault() as DescriptionAttribute;
var d = aDescription;
//d就是你想要的值
如果数值是尽可能连续的可以用一个数组存放对应的字符串
类似 char xxx[] = {"zero", "one", "two", "three",};
如果不是写一个函数类似
char f(int x)
{
switch (x)
{
case 1: return "one";
case 5: return "five";
case 10: return "ten";
}
return "unknown";
}
枚举符也可以用整型的constant-expression(常量表达式)进行初始化
如果某个枚举符的值均为非负,该枚举的表示范围就是[0:2^k-1],2^k是能使所有枚举符位于此范围内的最小的2的幂;如果存在负的枚举符值,则该枚举的取值范围就是[-2^k:2^k-1]这样就定义了一个最小的位段,其中能保存所有的枚举符值的常规2补码表示
----摘自Bjarne Stroustrup的<<C++程序设计语言>>(特别版)
因此
对于e1,k取1
对于e2,k取4
对于e3,k取20
把枚举转换成int型就可以了 。
枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。例如对枚举weekday的元素再作以下赋值: sun=5;mon=2;sun=mon; 都是错误的。
枚举元素本身由系统定义了一个表示序号的数值,从0 开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1, …,sat值为6。
如
String str = sun;
int week;
if(strequals(枚举值)){
week = 0;
}
在C语言中,枚举类型是被当做int或者unsigned int类型来处理的,所以按照C语言规范是没有办法遍历枚举类型的。
不过在一些特殊的情况下,可以实现有条件的遍历。
1 枚举类型必须连续。
由于枚举类型支持如下方式定义:
enum
{
ENUM_0,
ENUM_10 = 10,
ENUM_11
};
这样就会导致枚举类型不连续,这种枚举无法遍历。
2 枚举类型中人为加入起始及结束标记。
enum
{
ENUM_START,
ENUM_0,
ENUM_1,
ENUM_2,
ENUM_END
};
可以看到,在这个枚举类型中,人为加入可ENUM_START, 和ENUM_END。中间的ENUM_0,ENUM_1,ENUM_2才是实际的有效数据。当后续需要增删枚举元素时,也要保证ENUM_START, 和ENUM_END分别为最小和最大值。
满足以上两种条件下,就可以做枚举的遍历了,参考代码如下:
int i;
for(i = ENUM_START+1; i<ENUM_END; i ++)
{
//使用枚举元素。
}
这个循环中,i的值就是所有有效的枚举元素值。
以上就是关于c++输入枚举成员名字获得值的方法全部的内容,包括:c++输入枚举成员名字获得值的方法、枚举类型enum用法、C# 根据数字值获取相应枚举等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)