【发布时间】:2011-11-02 01:07:40
【问题描述】:
C++ 中是否有一种简单的方法可以将字符串转换为枚举(类似于 C# 中的Enum.Parse)? switch 语句会非常长,所以我想知道是否有更简单的方法来做到这一点?
编辑:
感谢您的所有回复。我意识到对于我的特殊情况,有一种更简单的方法可以做到这一点。字符串总是包含字符“S”,后跟一些数字,所以我就这样做了
int i = atoi(myStr.c_str() + 1);
然后打开i。
【问题讨论】:
-
很遗憾,您甚至不能将
switch与字符串一起使用。 -
我在an answer to another question 中演示了枚举-> 字符串映射的宏实现。您也可以轻松地将其调整为在另一个方向上工作。如果可以的话,最好避免多次命名枚举数。
-
请参阅here,了解使用 Boost 将字符串一般转换为枚举和其他基于整数的类型的巧妙方法!