>백엔드 개발 >C++ >열거형 정의를 수정하지 않고 C 열거형을 문자열에 쉽게 매핑하려면 어떻게 해야 합니까?

열거형 정의를 수정하지 않고 C 열거형을 문자열에 쉽게 매핑하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-17 14:10:10172검색

How Can I Easily Map C   Enums to Strings Without Modifying Enum Definitions?

C 열거형을 문자열에 쉽게 매핑

C 프로그래밍에서는 라이브러리 헤더에서 다양한 열거형을 만날 수 있습니다. 열거형과 사람이 읽을 수 있는 문자열 간의 변환을 용이하게 하기 위해 개발자는 우아하고 효율적인 솔루션을 찾는 경우가 많습니다. 일반적으로 무차별 접근 방식에는 각 열거형 값을 문자열로 변환하는 여러 함수를 만드는 것이 포함됩니다. 그러나 이 방법은 많은 사람들이 원하는 정교함과 사용 편의성이 부족합니다.

한 가지 잠재적인 해결책은 템플릿을 활용하는 것입니다. 템플릿을 활용하면 모든 열거형 유형을 해당 문자열에 매핑하는 일반 함수를 생성할 수 있습니다. 그러나 이 접근 방식을 사용하려면 원래 열거형 정의를 수정해야 하며, 이는 타사 라이브러리에 의존하기 때문에 항상 가능하지 않을 수 있습니다.

열거형 정의를 수정할 수 없는 상황에서는 다음 접근 방식을 고려하세요.

  1. 열거형 값을 문자열 리터럴에 매핑하는 std::map을 만듭니다.
  2. 사용자 지정 사용 map_init 클래스는 열거형 문자열 쌍으로 맵을 채우는 프로세스를 단순화합니다.

사용자 정의 map_init 클래스는 간결하고 읽기 쉬운 방식으로 열거형 문자열 쌍을 지정하여 맵을 초기화하는 편리한 방법을 제공합니다. 예는 다음과 같습니다.

std::map<MyEnum, const char*> MyMap;
map_init(MyMap)
    (eValue1, "A")
    (eValue2, "B")
    (eValue3, "C")
;

결과는 액세스할 수 있는 완전히 채워진 맵입니다.

eee e;
fff f;
std::cout << getStringValue(e);
std::cout << getStringValue(f);

이 접근 방식은 열거형을 문자열로 변환하는 깨끗하고 효율적인 솔루션을 제공합니다. 애플리케이션에 사용자 친화적이고 이해하기 쉬운 메시지가 표시됩니다.

위 내용은 열거형 정의를 수정하지 않고 C 열거형을 문자열에 쉽게 매핑하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.