首页 >后端开发 >C++ >如何在 C 中将字符串转换为枚举?

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-11 04:13:03528浏览

How to Convert a String to an Enum in C  ?

在 C 中将字符串转换为枚举

在 C 中,没有与 C# 的 Enum.Parse 直接等效的用于将字符串转换为枚举的方法。一种常见的解决方案是使用 switch 语句,但对于大型枚举列表,这种方法变得笨拙。

使用映射或无序映射

一个优雅的解决方案是利用 std::map 或 std::unordered_map 将字符串键与相应的枚举值关联起来。这样可以实现高效的查找和检索。

std::unordered_map<std::string, MyEnum> enumMap {
    {"foo", MyEnum::Foo},
    {"bar", MyEnum::Bar}
};

要将字符串转换为枚举:

MyEnum myEnum = enumMap[myString];

使用 C 11 进行简单初始化

使用 C 11 及更高版本,可以显着简化填充地图:

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

然后,检索枚举值:

auto it = table.find(myString);
if (it != table.end()) {
    return it->second;
} else {
    // Handle error
}

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

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