C での文字列の列挙型への変換
C では、文字列を列挙型に変換するための C# の Enum.Parse に直接相当するものはありません。一般的な解決策の 1 つは switch ステートメントを使用することですが、大規模な列挙型リストの場合、このアプローチは扱いにくくなります。
マップまたは順序なしマップの使用
エレガントな解決策は次のとおりです。 std::map または std::unowned_map を利用して、文字列キーを対応する列挙値に関連付けます。これにより、効率的な検索と取得が可能になります。
std::unordered_map<std::string, MyEnum> enumMap { {"foo", MyEnum::Foo}, {"bar", MyEnum::Bar} };
文字列を列挙型に変換するには:
MyEnum myEnum = enumMap[myString];
C 11 による簡単な初期化
C 11 以降では、マップの設定を大幅に簡素化できます:
static std::unordered_map<std::string, MyEnum> const table = { {"a", MyEnum::a}, {"b", MyEnum::b} };
次に、列挙値を取得します:
auto it = table.find(myString); if (it != table.end()) { return it->second; } else { // Handle error }
以上がC で文字列を列挙型に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。