首页  >  文章  >  后端开发  >  如何在 C 中高效地将字符串转换为枚举?

如何在 C 中高效地将字符串转换为枚举?

Patricia Arquette
Patricia Arquette原创
2024-11-11 01:55:02501浏览

How to Efficiently Convert Strings to Enums in C  ?

C 中字符串到枚举的高效转换

在 C 中使用枚举时,您可能会遇到需要将字符串转换为其对应的枚举枚举值。虽然 switch 语句就足够了,但对于大量枚举值来说它可能会变得很麻烦。本文探讨了高效字符串到枚举转换的替代方法。

std::map 解决方案

一种方法是创建 std::map或 std::unordered_map。使用字符串和枚举值的键值对填充映射非常简单,可以快速查找。但是,此方法具有 switch 语句的复杂性。

C 11 语法糖

对于 C 11 及更高版本,可以使用更简洁的解决方案。使用静态初始化的 std::unordered_map,您可以使用花括号优雅地填充映射:

static std::unordered_map<std::string,E> const table = { {"a",E::a}, {"b",E::b} };

要执行查找,只需在表上使用 find() 方法并检查迭代器是否有效。如果找到,您可以直接检索相应的枚举值。

示例

例如,考虑以下枚举声明:

enum class E { a, b, c };

并且字符串“a”,可以使用表格将其转换为相应的枚举值:

auto it = table.find("a");
if (it != table.end()) {
  E result = it->second;
  // ...
}

这种方法为 C 中的字符串转换为枚举提供了简洁高效的解决方案,降低了长 switch 的复杂度声明。

以上是如何在 C 中高效地将字符串转换为枚举?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn