在 C 中,开发人员经常遇到将字符串转换为枚举的需要。一种简单的方法是使用冗长的 switch 语句。然而,还有更方便的方法。
一种解决方案是使用标准库映射进行映射,它在字符串和枚举之间建立对应关系。虽然这可能很有效,但需要细致的初始化。
随着 C 11 的出现,可以使用更简化的方法。使用无序映射,您可以在编译阶段构建一个将字符串映射到枚举的表:
static std::unordered_map<std::string,E> const table = { {"a",E::a}, {"b",E::b} };
现在检索给定字符串的相应枚举非常简单:
auto it = table.find(str); if (it != table.end()) { return it->second; } else { // Handle error }
以上是如何高效地将 C 字符串转换为枚举?的详细内容。更多信息请关注PHP中文网其他相关文章!