列挙型を文字列にマッピングすることは、C 開発における一般的な要件です。前述の記事ではこの問題に焦点を当て、考えられる解決策について説明しています。著者は当初、switch ステートメントを使用する単純な方法を提案しましたが、その C のような性質について懸念を表明しました。
別のアプローチは、std::map
std::map<MyEnum, const char*> MyMap; map_init(MyMap) (eValue1, "A") (eValue2, "B") (eValue3, "C") ;
map_init クラスは、次のように、operator() の連鎖を容易にします。演算子<< std::ostream 上。このクラスは、テンプレート化された map_init_helper を使用して、マップまたはマップに似た構造にエントリを追加するための使いやすいインターフェイスを提供します。
map_init クラスとヘルパーの実装は次のとおりです。
templatestruct map_init_helper { T& data; map_init_helper(T& d) : data(d) {} map_init_helper& operator() (typename T::key_type const& key, typename T::mapped_type const& value) { data[key] = value; return *this; } }; template map_init_helper map_init(T& item) { return map_init_helper (item); } 記事また、同様の機能を提供する既存のライブラリとして boost::assign についても言及しています。マップまたはマップ初期化クラスを使用すると、開発者は列挙値を対応する文字列に簡単に変換して、読みやすさと使いやすさを向上させることができます。
以上がC の列挙型を文字列に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。