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