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