분할 해소: C 문자열을 열거형으로 변환
C에서 문자열을 열거형(열거형)으로 변환하는 것은 다음과 같은 과제를 제시합니다. 다양한 기술을 사용하여 해결합니다. switch 문은 간단한 솔루션처럼 보일 수 있지만 길이가 너무 길어져 다루기 어려울 수 있습니다. 이 기사에서는 문자열에서 열거형으로의 변환을 단순화하는 대체 접근 방식을 살펴봅니다.
한 가지 방법은 문자열과 해당 열거형 간의 매핑을 사용하는 것입니다. 문자열을 키로, 열거형을 값으로 사용하여 표준 맵 또는 unordered_map을 이 목적으로 사용할 수 있습니다. 그러나 지도를 채우는 것은 스위치 문을 만드는 것만큼 지루할 수 있습니다.
C 11 to the Rescue
C 11의 출현으로 지도를 다음과 같이 채웁니다. 문자열-열거형 쌍이 훨씬 쉬워집니다. 다음 코드 조각은 이러한 단순성을 보여줍니다.
static std::unordered_map<std::string, E> const table = {{"a",E::a}, {"b",E::b}}; auto it = table.find(str); if (it != table.end()) { return it->second; } else { error() }
이 코드에서 테이블 변수에는 문자열을 열거형과 연결하는 정적 맵이 포함되어 있습니다. 주어진 문자열 str을 맵에서 검색할 때 해당 enum 값이 발견되면 반환되고, 그렇지 않으면 오류가 보고됩니다.
결론
맵을 사용하는 동안 문자열을 열거형으로 변환하는 것은 편리하기 때문에 스위치 문을 만드는 것보다 맵을 채우는 것이 더 복잡할 수 있다는 점에 유의하는 것이 중요합니다. 그러나 C 11의 단순화된 구문을 사용하면 지도를 채우는 작업이 훨씬 간단해집니다.
위 내용은 C 문자열을 열거형으로 효율적으로 변환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!