我有一个包含170多种不同类型的枚举Obs,并且想知道我如何比较/分配字符串输入(从文件)到适当的枚举。
例如,假设我有一个看起来像
的枚举enum Obs {A1 = 1, B1, C1, A2, B2, C2, A3, B3, C3};
我从文件中读到了这一行
"A1 B2 C3"
如果我解析该行的元素以获取obs类型,是否有办法将其转换为枚举值。我知道我可以用一堆if语句来做,但是想知道是否有更容易的东西。文件中的行将会发生变化(不知道有多少障碍或它们是什么),但它们也将与枚举中的blind符号完全相同。
修改 因为它似乎得到了回答或澄清,解决方案似乎使用了地图;也许有人可以澄清如何预定义地图。我正在尝试的是
std::map<std::string, int> ObsMap =
{ {"A1", 1}, {"B1", 2}....};
然而,它不允许我这样做。另外,如何通过从文件传递一个字符串来访问值1(来自A1):基本上想要传递给我的地图“A1”并返回int值为1。
答案 0 :(得分:0)
我在我以前的工作中这样做了。我知道在C#中很容易,所以我假设相同,但实际上并没有支持的方法。最好的方法是制作每个枚举的std::map<std::string, MyEnum>
,然后在列表中找到它。