【发布时间】:2013-06-12 22:29:44
【问题描述】:
我正在尝试创建一个简单的模板引擎,一个引擎 它接受一个模式和一些变量并产生一个字符串输出。 思路是这样的:
const char * pattern = ReadPattern(); // pattern is like "%s in %s ft"
vector<const char *> variable = ReadVariable(); // variable is like "6", "5".
如何使用它们调用 printf 函数?
理想情况下我可以做到printf(pattern, variable[0], variable[1]);
但是因为模式和变量直到运行时才知道,
我什至不知道变量的数量。
据我了解,以编程方式构建 va_list 是不可移植的。
请帮忙,谢谢!
【问题讨论】:
-
但是对“populating-a-va-list”的最佳回答是“这是个坏主意……”
-
在运行时为 printf() 生成模式很可能是一个非常糟糕的主意。这通常会导致安全问题。见en.wikipedia.org/wiki/Uncontrolled_format_string
标签: c++ printf variadic-functions