背景:
您在外部庫標頭中定義了枚舉類型,並且希望將枚舉值轉換為人類可讀的字串。暴力解決方案涉及手動定義的函數,但使用模板尋求優雅的解決方案。
使用std::map:
一個簡單的方法是使用std::map
map_init 類別的語法糖:
為了簡化語法,可以建立一個 map_init 類別來啟用值分配的連結:
map_init(MyMap)(eValue1, "A") (eValue2, "B") (eValue3, "C");
該類別模板傳回一個map_init_helper對象,該物件儲存對地圖的參考並提供用於新增鍵值對的operator()函數。
用法範例:
要使用此方法,您可以:
替代方案方法:
如果枚舉名稱本身應該用作字串,請參考[這篇文章](連結到相關文章)。
總結:
該解決方案提供了一種簡單有效的方法將C 枚舉映射到字符串,為暴力方法提供了更優雅的替代方案。 map_init 類別進一步簡化了語法,使得使用枚舉值及其字串表示形式的映射變得更加容易。
以上是如何使用模板輕鬆將 C 枚舉映射到字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!