【问题标题】:Convert string from file to enum [duplicate]将字符串从文件转换为枚举[重复]
【发布时间】: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 值。

【问题讨论】:

标签: c++ enums


【解决方案1】:

我以前的工作就是这样做的。我知道这在 C# 中很容易,所以我假设相同,但实际上并没有受支持的方法。最好的方法是为每个枚举创建一个std::map&lt;std::string, MyEnum&gt;,然后在列表中找到它。

【讨论】:

    猜你喜欢
    • 2012-12-07
    • 2019-02-21
    • 2017-05-01
    • 2012-01-03
    • 2021-05-07
    • 2015-06-22
    • 2010-10-03
    相关资源
    最近更新 更多