【C++】enumと文字列を相互変換したい

enumの列挙定数名から文字列を取得したいと思った人は少なからずいると思う。そこで、色々試してみた。
 

マクロを使う

これを使うと、変数名がそのまま文字列として変換される。そう、変数名がである。つまり、代入されている列挙定数名を文字列としてあることはできない。
 

連想配列を使う

てことで第二の方法として、unordered_mapを使用して列挙定数と文字列を対応させる。そんなことをするなら最初からunordered_mapを使えとは言っちゃいけない。enumも必要な場面なんだよ。

こんなような列挙体があるとする
それを、unordered_mapで保持しようとすると以下のような感じになる。

ここに、対応表を作っていくことになる。

とすれば良い。
値の取り出しはat()を使えば良いので以下のようになる。

一般化してみた

連想配列を使った方法を一般化してみた。どうせなので文字列から列挙定数を返せるようにもしてみた。

あわせて読みたい

1件の返信

  1. google より:

    I like the valuable information you provide in your articles.
    I’ll bookmark your weblog and check again here frequently.
    I am quite certain I’ll learn many new stuff right
    here! Good luck for the next! http://pokerhp.net/

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です