0
정수 유형에 템플릿 화 된 C++ 클래스가 있습니다. 지금 sscanf()
와 유형 int_type
의 변수로 파일에서 데이터를 읽고 싶습니다템플릿 매개 변수에 대한 형식 지정
template<typename int_type>
void myClass(int_type a) {
// [...]
}
의 라인을 따라 뭔가. 이를 위해 형식을 int_type
으로 지정해야합니다. 지금까지 저는
if(sizeof(int) == sizeof(int_type))
sscanf(buffer, "%d %d", &i, &j);
else if(sizeof(long long) == sizeof(int_type))
sscanf(buffer, "%lld %lld", &i, &j);
else
assert(false);
과 같은 작업을하고 있었지만이 작업을 처리하는 가장 좋은 방법은 아닙니다.
다른 제안 사항이 있으십니까?
당신은 클래스와 전문화 사용할 수 있습니다
'sscanf()'보다는'std :: istringstream'에 바인드 된'operator <<()'의 템플릿 버전을 사용하는 것이 더 낫습니다. –
'sizeof (int) == sizeof (unsigned int)',하지만'% d '은'unsigned int'에 대한 올바른 형식 지정자가 아닙니다 (예를 들어'INT_MAX'와'UINT_MAX' 사이의 수를 생각하십시오). 여러 유형에 대해 다른 구현을 제공하려면 * 함수 오버로드 *가 일반적으로 좋은 방법입니다. – dyp