1
有没有办法从我的枚举对象中选择指定的第i个枚举?如何选择枚举对象中的第i个元素
例如:
enum keys_t = {P, Pv, Pr, Pd, U, I, S, proc, R, H, A, sqrt, plus, minus, mult, equal, none, error};
,现在我想调用元素数i。
有没有办法从我的枚举对象中选择指定的第i个枚举?如何选择枚举对象中的第i个元素
例如:
enum keys_t = {P, Pv, Pr, Pd, U, I, S, proc, R, H, A, sqrt, plus, minus, mult, equal, none, error};
,现在我想调用元素数i。
如果enum
没有明确指定号码,你可以投i
到enum keys_t
获得的值:
enum keys_t ithValue = (enum keys_t)i;
一般,不过,有一个当你将他们获得i
个值不支持明确:你需要建立一个数组:
enum keys_t {P=2, Pv=3, Pr=5, Pd=7, U=11, I=13, S=17, proc=19, R=23, H=29, A=31, sqrt=37, plus=41, minus=43, mult=47, equal=53, none=0, error=59};
enum keys_t keyT_vals[] = {P, Pv, Pd, U, ...}; // ...and so on
...
enum keys_t ithValue = keyT_vals[i];
如果你想获得的第i个枚举值的名称,你需要创建一个字符串数组,并mainta在它与枚举分开。您可以使用该 “stringize” 宏:
#define STR(x) #x
enum keys_t {P, one, error, ...};
char *keys_t_names[] = {STR(P), STR(one), STR(error), ...};
...
char *ithName = keys_t_names[i];
你肯定第一的方法呢?这个快速的例子似乎不起作用:'enum keys_t = {P,one,error}; enum keys_t ithValue =(enum keys_t)1; (“值为%s \ n”,ith值); return 0;' – 2014-12-03 15:00:17
@Noran C'enum'是一个整数类型,你不能像字符串打印或获取它的名字。实际上,编译器完成时,所有的枚举名称都消失了。该技巧适用于数值,但([demo](http://ideone.com/5UoNzq))。 – dasblinkenlight 2014-12-03 15:05:35
非常感谢!做得好! – 2014-12-03 15:12:13