C : Enum 값을 텍스트 형식으로 인쇄
프로그래밍 영역에서는 열거형(enums)을 사용하여 숫자 값을 할당하는 경우가 많습니다. 별개의 상태 또는 카테고리. 그러나 열거형을 다룰 때는 가독성과 이해도를 높이기 위해 해당 값을 보다 의미 있는 텍스트 형식으로 전달해야 합니다.
문제: 열거형 값을 텍스트로 변환
다음과 같이 정의된 열거형을 생각해 보세요.
enum Errors { ErrorA = 0, ErrorB, ErrorC, };
이제 열거형의 값을 인쇄해 보겠습니다. 열거형 변수:
Errors anError = ErrorA; std::cout << anError; // Will print "0" instead of "ErrorA"
여기서 문제는 열거형의 숫자 값을 해당 텍스트 표현으로 변환하는 것입니다.
Switch/If를 사용하지 않는 솔루션
1. 맵 사용:
한 가지 접근 방식은 맵을 활용하여 열거형 값과 해당 텍스트 표현 간의 대응 관계를 설정하는 것입니다.
#include <map> #include <string_view> // Create a map that associates enum values with string views std::map<Errors, std::string_view> errorTextMap = { {ErrorA, "ErrorA"}, {ErrorB, "ErrorB"}, {ErrorC, "ErrorC"}, }; // Overload the << operator to handle enum values std::ostream& operator<<(std::ostream& out, const Errors value) { return out << errorTextMap[value]; }
2. 선형 검색과 함께 구조 배열 사용:
대체 솔루션은 구조 배열을 만드는 것입니다.
#include <string_view> // Define a structure to store enum values and text representations struct MapEntry { Errors value; std::string_view str; }; // Create an array of structures containing the mapping const MapEntry errorTextEntries[] = { {ErrorA, "ErrorA"}, {ErrorB, "ErrorB"}, {ErrorC, "ErrorC"}, {ErrorA, 0} // Dummy entry to terminate the search }; // Overload the << operator to handle enum values std::ostream& operator<<(std::ostream& out, const Errors value) { const char* s = nullptr; for (const MapEntry* i = errorTextEntries; i->str; i++) { if (i->value == value) { s = i->str; break; } } return out << s; }
솔루션 테스트:
제안된 기능을 시연하기 위해 솔루션:
#include <iostream> int main() { std::cout << ErrorA << std::endl; std::cout << ErrorB << std::endl; std::cout << ErrorC << std::endl; return 0; }
출력:
ErrorA ErrorB ErrorC
위 내용은 Switch/If 문을 사용하지 않고 C 열거형 값을 사람이 읽을 수 있는 텍스트로 인쇄하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!