制作我自己的printf功能?

时间:2010-12-27 03:29:58

标签: c variadic-functions

我想知道如何才能做到这一点。我对N论点部分感到困惑:

printf("Hello, I'm %i years old and my mom is %i .",me.age(),mom.age());

我想创建一个函数,它将采用这样的格式化字符串并返回一个std字符串。

如何完成N个参数?

1 个答案:

答案 0 :(得分:10)

printf是一个可变函数;您可以使用<stdarg.h>提供的工具实现自己的可变参数函数。

在C ++中,应尽可能避免使用可变参数函数。它们可以作为参数接受的类型非常有限,并且它们不是类型安全的。 C ++ 0x为C ++添加了可变参数模板;一旦对此功能的支持很普遍,您将能够编写类型安全的可变参数函数。

与此同时,最好使用其他类型的安全方法。例如,Boost.Format会重载%运算符以执行格式化。