彌合鴻溝:將C 字串轉換為枚舉類型
在C 中,將字串轉換為枚舉類型(enum ) 提出了一個挑戰,可以使用各種技術來解決。雖然 switch 語句看起來像是一個簡單的解決方案,但它的長度可能會變得難以處理。本文探討了簡化字串到枚舉轉換的替代方法。
一種方法涉及在字串與其對應的枚舉之間使用映射。標準映射或 unordered_map 可用於此目的,其中字串作為鍵,枚舉作為值。然而,填充地圖可能與創建 switch 語句一樣乏味。
C 11 來救援
隨著 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 { error() }
在此程式碼中,表變數包含將字串與枚舉關聯起來的靜態映射。在地圖中尋找給定的字串str時,如果找到則傳回其對應的枚舉值,否則報錯。
結論
使用地圖時將字串轉換為枚舉提供了便利,但需要注意的是,填充映射可能比創建 switch 語句更複雜。然而,借助 C 11 的簡化語法,填充映射變得更加簡單。
以上是如何有效率地將 C 字串轉換為枚舉類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!