C 列挙型を文字列に効率的にマップする方法
C 列挙型を使用する場合、値をユーザー形式に変換する必要が生じる場合があります。定義された文字列、またはその逆。ブルート フォース アプローチには一連の switch ステートメントが含まれる可能性がありますが、より洗練されたソリューションも利用できます。
Std::map の使用
列挙型をマッピングするための信頼できる方法文字列に変換するには、 std::map
Syntactic Sugar: Map_init Helper Class
読みやすさを向上させるには、map_init クラスの使用を検討してください。このクラスはマップを初期化し、エントリを追加するための便利な構文を提供します。
std::map<MyEnum, const char*> MyMap; map_init(MyMap) (eValue1, "A") (eValue2, "B") (eValue3, "C") ;
このクラスは、エントリの連鎖を可能にする map_init_helper 構造体を使用します。
Boost::assign を利用する
カスタム ヘルパーを作成したくない場合は、次のようにすることができます。 Boost::assign ライブラリを利用します。これは、マップとその他のマップに似た構造の両方に同様の機能を提供します。
結論
ただし、ここで説明するテクニックは必ずしも同じではないかもしれません。 RTTI を使用するのと同じように簡潔であり、C enum を文字列にマッピングするためのよりカスタマイズされた柔軟なアプローチを提供し、カスタム文字列表現や簡単さなどの特定の要件に応えます。メンテナンス。
以上がC の列挙型を文字列に効率的にマップするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。