* printf
일반 가변인자 함수와 비교했을 때 가변인자 템플릿은 타입 안정성을 갖출 수 있다. 일반적으로 우리가 사용하는 printf의 경우 %d와 같이 어떤 형식으로 출력해야할 지 정해줘야 한다. 하지만 가변인자 템플릿은 해당 인자의 자료형을 알 수 있기 때문에 %의 정보만 있으면 된다.
void MyPrintf(const char* inputString)
{
std::cout << inputString;
}
template<typename T, typename... Ts>
void MyPrintf(const char* inputString, T&& arg, Ts&&... args)
{
while ('\0' != *inputString)
{
if ('%' == *inputString)
{
++inputString;
std::cout << arg;
MyPrintf(inputString, std::forward<Ts>(args)...);
return;
}
std::cout << *(inputString++);
}
}
int main(void)
{
MyPrintf("string : %, float : %, char : %, int : %",
"testString",
10.022f,
'b',
39292);
return 0;
}
string : testString, float : 10.022, char : b, int : 39292
* ...
'C++' 카테고리의 다른 글
| 템플릿 메타 프로그래밍(Template Meta Programming, TMP) 예시 (0) | 2022.05.24 |
|---|---|
| 템플릿 메타 프로그래밍(Template Meta Programming, TMP) (0) | 2022.05.23 |
| 가변인자 템플릿(Variadic Template) (0) | 2022.05.23 |
| 템플릿(Template) (0) | 2022.05.23 |
| 람다(Lambda) (0) | 2022.04.11 |