我试图弄清楚如何在运行定义的字符串上的 C++ sprintf 调用中使用运行时定义的列表。字符串中已经有标记,我只需要以某种方式调用它以匹配字符串中尽可能多的 args。基本上是将下面的 4 个调用编译成一个对所有调用都有效的调用,类似于 sprintf(缓冲区,“这是我的带有 args %i 的字符串”,myvec)。
std::vector<int> myvec = {0, 1, 2, 3, 4};
char buffer [500];
sprintf (buffer, "This is my string with args %i", myvec[0], myvec[1], myvec[2], myvec[3], myvec[4]);
sprintf (buffer, "This is my string with args %i %i", myvec[0], myvec[1], myvec[2], myvec[3], myvec[4]);
sprintf (buffer, "This is my string with args %i %i %i", myvec[0], myvec[1], myvec[2], myvec[3], myvec[4]);
sprintf (buffer, "This is my string with args %i %i %i %i", myvec[0], myvec[1], myvec[2], myvec[3], myvec[4]);
我和我的同事谈过,他们认为不存在这样的东西,所以我想我会把它放在那里。有任何想法吗?