C에서 컴파일 타임 문자열 선언 Concisley
소개
C에서 컴파일 타임 문자열 선언 컴파일 내내 일정하게 유지되는 는 번거로울 수 있습니다. 기존 접근 방식에서는 다양한 문자 시퀀스를 지정해야 합니다.
using str = sequence<'H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!'>;
기존 접근 방식: 과제 및 제한
이상적으로는 다음과 같이 컴파일 시간 문자열을 선언하는 것이 더 간단해야 합니다.
using str1 = sequence<"Hello, world!">; constexpr auto str2 = "Hello, world!"_s;
그러나 이러한 접근 방식은 장애물:
해결책: str_const 라이브러리
Scott Schurr의 C Now 2012 프레젠테이션에서 str_const 라이브러리는 편리한 솔루션을 제공합니다.
constexpr str_const my_string = "Hello, world!"; static_assert(my_string.size() == 13); static_assert(my_string[4] == 'o'); constexpr str_const world(my_string, 7, 5); static_assert(world == "world");
이 솔루션은 constexpr 범위 확인 및 유연한 하위 문자열 검색과 같은 이점을 제공합니다.
업데이트: C 17 및 std::string_view
C 17에서 std::string_view는 유사한 솔루션을 제공합니다.
constexpr std::string_view my_string = "Hello, world!"; static_assert(my_string.size() == 13); static_assert(my_string[4] == 'o'); constexpr std::string_view world(my_string.substr(7, 5)); static_assert(world == "world");
이 접근 방식 다음과 같은 이점을 제공합니다.
위 내용은 C에서 컴파일 타임 문자열을 어떻게 간결하게 선언할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!