1. ホーム
  2. c++

[解決済み] enum型変数を文字列に変換するには?

2022-04-26 15:26:13

質問

enum型の変数の値をprintfで表示させるには?たとえば、以下のような場合です。

typedef enum {Linux, Apple, Windows} OS_type; 
OS_type myOS = Linux;

そして、私が必要とするのは、次のようなものです。

printenum(OS_type, "My OS is %s", myOS);

は、整数ではなく、文字列 "Linux" を表示しなければなりません。

まず、文字列の値をインデックスにした配列を作らなければならないのでしょう。しかし、それが最も美しい方法かどうかはわからない。可能なのだろうか?

どのように解決するのですか?

美しいやり方はありません。ただ、enumでインデックスされた文字列の配列を設定するだけです。

出力が多い場合は、enumパラメータを受け取ってルックアップを行う演算子<<を定義するとよいでしょう。