我正在嘗試創建一個簡單的模板引擎,引擎 ,它接受一個模式和一些變量並生成一個字符串輸出。 這是想法:如何用數組調用printf?
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是一個不可移植的。
請幫忙,謝謝!
http://stackoverflow.com/questions/988290/populating-a-va-list – ctn
但是「populate-a-va-list」的最佳答案是「這是一個壞主意......」 – yufanyufan
生成printf()的運行時模式很可能是一個非常糟糕的主意。這通常會導致安全問題。請參閱https://en.wikipedia.org/wiki/Uncontrolled_format_string – kpaleniu