利用可变模板参数自定义printf函数,直接上代码。
/*******************************************
* Name: example2.cpp
* Describe: 可变模板参数实例2:重写printf
* Author: SSCOCA
* Version: 1.00
* Date: 2018年8月9日
* Other:
*********************************************/
#include <iostream>
using namespace std;
void printf(const char* s){
while (*s)
{
if (*s == '%' && *(++s) != '%')
throw runtime_error("invalid format string:miss argument");
cout << *s++;
}
}
template<typename T, typename... Args>
void printf(const char* s, T value, Args... args)
{
while (*s)
{
if (*s == '%' && *(++s) != '%'){
cout << value;
printf(++s, args...);
return;
}
cout << *s++;
}
throw logic_error("extra arguments provided to print");
}
void main(){
printf("%d-%s-%p\n", 12, "This is sscoca", new int);
}