2016-11-11 2 views
0

저는 템플릿 함수를 사용하고 있습니다. 변수가 std :: string 유형인지 테스트하는 방법이 필요합니다. 문자열 유형이 정수와 다른 경우 정수 입력과 구분해야합니다. 이렇게하려면 typeid를 사용하는 데 문제가 있습니다.C++ 변수가 std :: string 유형인지 확인하는 방법?

+7

을 당신은 보통 (부분) 전문 또는 오버로드를 사용하려면/과부하는 변수가 어떤 유형인지 간단히 알 수 있습니다. –

+0

추가 컨텍스트를 제공 할 수 있습니까? 어떤 문맥에서 어떤 변수를 테스트하여 어떤 문제를 해결할 수 있습니까? – Barry

+0

이것은 할당이며 템플릿 함수를 사용하도록 지정된 것입니다. 예를 들어, 두 개의 숫자를 없애고 다른 단어에서 하나의 단어를 추출 할 수 있습니다. 예를 들어 pizzahut이라는 단어가 있고 템플릿 함수의 두 변수가 pizzahut 및 hut로 입력 된 경우 피자를 반환해야합니다. 이제 문제는 함수 int와 문자열을 구별하는 방법이 필요합니다. – FreeLand

답변

6

그냥 과부하가 : 여러 가지 다른 종류의 일해야하는 경우

template<typename T> 
void myFunc(T t) {/* */} 

void myFunc(std::string s) {/* */} 

, 아마 다른 기능에 있어야합니다. 그런 식으로 코드는 형식 검사가 복잡하지 않습니다. 컴파일러가 오버로드를 유형과 일치시키는 것에 대해 걱정할 필요가 있습니다. 템플릿 컨텍스트에 다음 완전히 대신 전문 수 myFunc<T>(t)처럼 기능을 살았어해야하는 경우

: 전문화에, 그래서

template<> 
void myFunc<std::string>(std::string s) {/* */} 
관련 문제