【问题标题】:Enum Parse C++ Or Analog枚举解析 C++ 或模拟
【发布时间】:2015-06-20 10:19:32
【问题描述】:

在 C# 中使用代码:

enum COMPUTER_NAME_FORMAT
{
        ComputerNameNetBIOS,
        ComputerNameDnsHostname,
        ComputerNameDnsDomain,
        ComputerNameDnsFullyQualified,
        ComputerNamePhysicalNetBIOS,
        ComputerNamePhysicalDnsHostname,
        ComputerNamePhysicalDnsDomain,
        ComputerNamePhysicalDnsFullyQualified
}

string format = "ComputerNameDnsFullyQualified";
(COMPUTER_NAME_FORMAT)Enum.Parse(typeof(COMPUTER_NAME_FORMAT), format)

如何在 C++ 中使用它?

【问题讨论】:

  • 你可以使用宏来生成你的枚举,它的值的数组,以及它的字符串数组并排,然后编写一个初始化函数,它将遍历字符串数组来找到你的字符串,然后从 values 数组中返回对应的值。你可以用一张地图来加快速度。我在 SO 上找不到解决方案,但其他方向的解决方案可以帮助您入门:stackoverflow.com/questions/201593/… 我还编写了一个简单的库来执行此操作github.com/aantron/better-enums

标签: c# c++ enums


【解决方案1】:

C 或 C++ 中没有这样的函数。但是您可以创建一个 std::map<std::string, COMPUTER_NAME_FORMAT> m 来做到这一点。

通过m["ComputerNameNetBIOS"] = ComputerNameNetBIOS; 等来填充地图。 然后使用auto f = m.find(format); if (f != m.end()) { ... value is in f.second ... }

【讨论】:

  • 谢谢,这个怎么用?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-01
  • 2012-08-05
  • 1970-01-01
  • 2020-04-25
  • 2021-07-15
相关资源
最近更新 更多