C 열거형을 문자열로 변환하는 방법
이름이 지정된 C 열거형으로 작업할 때 열거형 값을 해당하는 열거형 값으로 변환하는 시나리오가 발생할 수 있습니다. 문자열 표현이 필요합니다. 이 변환을 위한 여러 접근 방식이 있지만 이 문서에서는 소스 코드를 수정하지 않고 프로젝트의 모든 열거형을 문자열로 변환하는 함수 생성과 관련된 특정 쿼리를 다룹니다.
X-Macros: A Comprehensive Solution
권장되는 접근 방식은 X-매크로를 활용하는 것입니다. 구현 예는 다음과 같습니다.
#include <iostream> enum Colours { # define X(a) a, # include "colours.def" # undef X ColoursCount }; char const* const colours_str[] = { # define X(a) #a, # include "colours.def" # undef X 0 }; std::ostream& operator<<(std::ostream& os, enum Colours c) { if (c >= ColoursCount || c < 0) return os << "???"; return os << colours_str[c]; } int main() { std::cout << Red << Blue << Green << Cyan << Yellow << Magenta << std::endl; }
colors.def 파일에서 다음과 같이 열거형을 정의합니다.
X(Red) X(Green) X(Blue) X(Cyan) X(Yellow) X(Magenta)
이 방법은 모든 항목에 대한 변환 함수를 생성하는 유연한 방법을 제공합니다. 소스 코드를 수정하지 않고도 프로젝트에 열거형을 추가할 수 있습니다.
사용자 정의 가능한 문자열 생성
또는 생성된 문자열 표현을 사용자 정의할 수 있는 방법을 선택할 수 있습니다. 다음 코드 조각은 이를 달성하는 방법을 보여줍니다.
#define X(a, b) a, #define X(a, b) b, X(Red, "red") X(Green, "green") // etc.
이 접근 방식은 생성된 문자열을 더 효과적으로 제어할 수 있으며 애플리케이션에 대한 특정 사용자 정의가 필요할 때 특히 유용할 수 있습니다.
위 내용은 소스 코드를 수정하지 않고 C 열거형을 문자열로 자동 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!