C 스타일 문자열을 템플릿 인수로 사용
C에서 템플릿 인수는 일반 함수나 클래스에 대한 유형이나 값을 지정하는 방법을 제공합니다. . 그러나 C 스타일 문자열은 템플릿 인수로 직접 사용할 수 없습니다.
C 스타일 문자열은 null 종결자가 있는 문자 배열이기 때문입니다. 템플릿 인수로 사용되는 경우 문자열 길이를 지정하는 특수 구문이 필요합니다. 게다가 컴파일러는 C 스타일 문자열에 대해 유형 검사를 수행할 수 없으므로 오류가 발생하기 쉽습니다.
한 가지 해결책은 C 스타일 문자열을 허용하고 문자열과 상호 작용하기 위한 인터페이스를 제공하는 래퍼 클래스를 사용하는 것입니다. . 예를 들면 다음과 같습니다.
<code class="C++">template <class StringType> struct StringWrapper { StringType str; StringWrapper(StringType s) : str(s) {} // Methods for accessing and manipulating the string ... };</code>
이 래퍼 클래스를 템플릿 인수로 사용할 수 있습니다.
<code class="C++">template <class T> struct X { StringWrapper<T> str; // Methods for accessing and manipulating the string ... };</code>
또는 const char * 유형을 템플릿 인수로 사용하고 C 스타일 문자열을 인수로 사용:
<code class="C++">template <const char *str> struct X { const char *GetString() const { return str; } }; int main() { X<"String"> x; cout << x.GetString(); }
C 11 이상에서는 문자열 리터럴을 인수로 전달하는 데 사용할 수 있는 템플릿 인수로 문자 팩을 사용할 수 있습니다.
<code class="C++">template <char... c> struct X { // Methods for accessing and manipulating the string ... }; int main() { X<'S', 't', 'r', 'i', 'n', 'g'> x; // ... }</code>
위 내용은 다음은 질문과 답변 형식에 맞게 조정된 기사의 몇 가지 제목 옵션입니다. 직접적이고 간결함: * C에서 C 스타일 문자열을 템플릿 인수로 사용하는 방법 * C 스타일 문자열을 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!