C 中字符串到枚举的高效转换
在 C 中使用枚举时,您可能会遇到需要将字符串转换为其对应的枚举枚举值。虽然 switch 语句就足够了,但对于大量枚举值来说它可能会变得很麻烦。本文探讨了高效字符串到枚举转换的替代方法。
std::map 解决方案
一种方法是创建 std::map
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中文网其他相关文章!