* 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

 

 

* ...

 

+ Recent posts