將枚舉對應到字串是 C 開發中的常見要求。前面提供的文章重點討論了這個問題並討論了潛在的解決方案。作者最初建議使用 switch 語句的簡單方法,但對其類 C 性質表示擔憂。
另一種方法是利用 std::map
std::map<MyEnum, const char*> MyMap; map_init(MyMap) (eValue1, "A") (eValue2, "B") (eValue3, "C") ;
map_init 類有助於運算符()的鏈接,類似於運算子
這是map_init類別和助手的實作:
template<typename T> struct map_init_helper { T& data; map_init_helper(T& d) : data(d) {} map_init_helper& operator() (typename T::key_type const& key, typename T::mapped_type const& value) { data[key] = value; return *this; } }; template<typename T> map_init_helper<T> map_init(T& item) { return map_init_helper<T>(item); }
文章也提到 boost::assign 作為提供類似功能的現有函式庫。透過使用map或map-init類,開發人員可以輕鬆地將枚舉值轉換為相應的字串,以提高可讀性和可用性。
以上是如何有效地將 C 枚舉轉換為字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!