0

我正在尝试创建一个简单的模板引擎,一个采用模式和一些变量并产生字符串输出的引擎。这是这样的想法:

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 是不可移植的。

请帮忙,谢谢!

4

1 回答 1

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;
}

如果您没有上限,那么这是一个坏主意

于 2013-06-12T22:50:27.150 回答