1. ホーム
  2. c++

[解決済み] C++の文字列をenumに変換

2022-03-13 18:15:53

質問

C++で文字列をenumに変換する簡単な方法はありますか? Enum.Parse C#の場合)? switch文は次のようになります。 非常に そのため、もっと簡単な方法はないかと考えています。

EDIT

たくさんのご返信ありがとうございました。 私の特別なケースでは、もっと簡単な方法があることに気づきました。 文字列には常に'S'という文字と、それに続く数字が含まれていましたので、次のようにしました。

int i = atoi(myStr.c_str() + 1);

で、iのスイッチを入れた。

解決方法は?

A std::map<std::string, MyEnum> (または unordered_map を使えば、簡単にできます。しかし、マップへの入力はswitch文と同じように面倒です。

編集 : 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() }