列挙値に基づいて対応する列挙名を得る

511 ワード

#はC++の文字列化オペレータで、使用するすべての変数が名前と同じ文字列に変換されます.
たとえば
int num=0;
同調用上プログラム中のAddSet(num);
0ではなくnumを出力します.この特性を変更して列挙値に基づいて対応する列挙名を得ることができます
#include<string>
#include<iostream>
using namespace std;
std::string mystr;
enum
{
    TEXT=1,
    STRING
};

int Setstr(const char * val)
{
    mystr = val;
}

#define AddSet(val) Setstr(#val)

int main()
{
    AddSet(TEXT);
    printf("%s/n",mystr.c_str());
    system("pause");
    return 0;
}