我有一个外部工具,它根据用户输入生成ENUM。现在我的C ++代码正在使用这个ENUM,我必须根据变量'x'选择一个特定的ENUM。生成的ENUMS格式为'ENUM_1','ENUM_2','ENUM_3'......等等。现在我想要代码中的代码,以便根据'x'选择适当的ENUM。我尝试使用strcat函数,如:
typedef enum ( enum_1, enum_2, enum_3...enum_n) map1;
y=(map1)strcat("enum_", x);
但它给出了错误“无法从char *转换为map1。
有人可以建议一种实现这一目标的方法。
THANKYOU
答案 0 :(得分:1)
您无法使用strcat
执行此操作。从描述中我理解的是,您希望将x
转换为map1
。为此,您可以map1 m = (map1)(x-1);
查看此示例代码:
typedef enum { enum_1, enum_2, enum_3} map1;
int main()
{
int x = 1;
map1 m = (map1)(x-1);
}
-1
是必需的,因为map1
中枚举的整数值从0开始。
答案 1 :(得分:1)
你不能这样做。那么你不能这样做......
在编译时不会按名称评估枚举。你必须尝试使用预处理器。您可以创建一个定义来执行类似的操作。类似的东西:
#define fn(x) enum_##x
然后致电
fn(x)
但是当文件被预处理时会发生这种情况。所以你无法访问运行时变量。根据你的代码判断,我认为你不能做你想做的事。 祝你好运。
答案 2 :(得分:0)
现在我想要代码中的代码,以便根据'x'选择适当的ENUM。
枚举值为常量,并且基于我假设x
是整数数据类型的语句。
y=(map1)strcat("enum_", x);
strcat(..)传递参数的类型应为char*
。显然,基于之前的陈述,x
不属于char*
类型。不清楚为什么使用strcat
来完成此任务。
回答您的主题:否。您不能将strcat与枚举值一起使用。