타사 라이브러리 헤더에 정의된 열거형을 활용하는 경우 열거형 값을 사용자로 변환하는 메커니즘을 구축해야 합니다. -정의된 문자열 또는 그 반대.
간단한 접근 방식에는 일련의 기능을 만드는 것이 포함됩니다.
enum MyEnum {VAL1, VAL2,VAL3}; String getStringFromEnum(MyEnum e) { switch e { case VAL1: return "Value 1"; case VAL2: return "Value 2"; case VAL1: return "Value 3"; default: throw Exception("Bad MyEnum"); } }
그러나 이 방법은 우아함이 부족하고 C 스타일 접근 방식과 유사합니다.
더 보기 정교한 접근 방식은 템플릿을 활용합니다.
std::map<MyEnum, char const*> MyMap; //... MyMap.insert(std::make_pair(VAL1, "Value 1")); //... char const* enumString = MyMap[e];
이 방법은 깔끔하고 효율적인 매핑 메커니즘을 제공합니다.
구문적 편의를 위해 , 다음 도우미 클래스를 사용할 수 있습니다:
template<typename T> struct map_init_helper { map_init_helper(T& d) : data(d) {} T& data; map_init_helper& operator() (typename T::key_type const& key, typename T::mapped_type const& value) { data[key] = value; return *this; } }; template<typename T> map_init_helper<T> map_init(T& item) { return map_init_helper<T>(item); }
이를 통해 도우미를 사용하면 다음과 같이 매핑을 수행할 수 있습니다.
std::map<MyEnum, char const*> MyMap; map_init(MyMap) (VAL1, "Value 1") (VAL2, "Value 2") (VAL3, "Value 3");
이 단순화된 구문을 사용하면 자세한 삽입 문이 필요하지 않습니다.
위 내용은 C 열거형을 문자열에 효율적으로 매핑하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!