C では、開発者は文字列を列挙型に変換する必要があることがよくあります。素朴なアプローチは、長い switch ステートメントを使用することです。ただし、より便利な方法も存在します。
1 つの解決策は、文字列と列挙型の間の対応を確立する標準ライブラリ マップを使用したマッピングです。これは効果的ですが、綿密な初期化が必要です。
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 中国語 Web サイトの他の関連記事を参照してください。