首頁 >後端開發 >C++ >如何有效率地將 C 字串轉換為枚舉類型?

如何有效率地將 C 字串轉換為枚舉類型?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-25 11:28:24488瀏覽

How Can You Efficiently Convert C   Strings to Enumerated Types?

彌合鴻溝:將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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn