可变参数模板实现printf
时间: 2023-10-24 19:01:35 浏览: 95
printf可变参数实现
在C 11中,可以使用可变参数模板来实现类似printf函数的功能。下面是一个示例代码:
```cpp
#include <iostream>
#include <cstdarg>
// 可变参数模板函数
template<typename... Args>
void myPrintf(const char* format, Args... args)
{
// 使用va_list和va_start宏访问可变参数
va_list argList;
va_start(argList, format);
// 格式化输出
int result = vprintf(format, argList);
// 结束可变参数的访问
va_end(argList);
}
int main()
{
int num = 10;
const char* str = "Hello";
myPrintf("The number is %d\n", num); // 打印数字
myPrintf("The string is %s\n", str); // 打印字符串
return 0;
}
```
在上面的代码中,我们定义了一个可变参数模板函数`myPrintf`,它接受一个格式字符串和可变数量的参数。在函数内部,我们使用`va_list`、`va_start`和`va_end`来访问可变参数,并使用`vprintf`函数进行格式化输出。
这样,我们就可以通过调用`myPrintf`函数来实现类似printf函数的功能,可以传入不同类型和数量的参数进行格式化输出。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
阅读全文