>백엔드 개발 >C++ >C 문자열을 열거형으로 효율적으로 변환하려면 어떻게 해야 합니까?

C 문자열을 열거형으로 효율적으로 변환하려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-25 11:28:24477검색

How Can You Efficiently Convert C   Strings to Enumerated Types?

분할 해소: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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