ホームページ > バックエンド開発 > C++ > C で文字列を列挙型に変換するにはどうすればよいですか?

C で文字列を列挙型に変換するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-11 04:13:03
オリジナル
546 人が閲覧しました

How to Convert a String to an Enum in C  ?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート