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

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

Mary-Kate Olsen
发布: 2024-11-11 04:13:03
原创
527 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板