【发布时间】:2014-12-08 17:28:27
【问题描述】:
我有一个包含 170 多种不同类型的枚举 Obs,我想知道如何将字符串输入(来自文件)比较/分配给适当的枚举。
例如,假设我有一个看起来像
的枚举enum Obs {A1 = 1, B1, C1, A2, B2, C2, A3, B3, C3};
我从文件中读入了这一行
"A1 B2 C3"
如果我解析行的元素以获取 obs 类型,有没有办法将其转换为枚举值。我知道我可以用一堆 if 语句来做到这一点,但想知道是否有更简单的方法。文件中的行将发生变化(不知道有多少个 obs 或它们是什么),但它们也将与枚举中 obs 的符号完全相同。
编辑 看来这已得到回答或澄清,并且解决方案似乎使用了地图;也许有人可以澄清如何预定义地图。我正在尝试的是
std::map<std::string, int> ObsMap =
{ {"A1", 1}, {"B1", 2}....};
但是它不允许我这样做。另外,我如何通过从文件中传递一个字符串来访问 1(来自 A1)的值:基本上想要传递到我的地图“A1”并返回 1 的 int 值。
【问题讨论】:
-
“我有一个包含 170 多种不同类型的枚举 Obs”。好吧,这就是您的问题,我们甚至还没有开始讨论将它们全部转换为字符串。