我正在尝试创建一个简单的模板引擎,一个引擎 采用模式和一些变量并产生一个字符串输出。 这就是这个想法:
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是不可移植的。
请帮助,谢谢!
答案 0 :(得分:1)
如果vector
元素的数量有上限,则相对简单。假设上限为3:
int printf_vector(const char *p, vector<const char *> v) {
switch (v.size()) {
case 0: return printf(p);
case 1: return printf(p, v[0]);
case 2: return printf(p, v[0], v[1]);
case 3: return printf(p, v[0], v[1], v[2]);
default: break;
}
return -E2BIG;
}
如果没有上限,则为this is a bad idea。