来自未知参数的C ++ sprintf

时间:2011-03-20 01:24:01

标签: c++ node.js printf

尝试编写nodejs sprintf本机实现,同时提高我的c ++技能,我研究如何为sprintf提供未知的长度参数。我首先虽然我可以使用vsprintf,但无法找到如何填充它。基本上,nodejs / v8绑定给我一个参数数组,我可以将其转换为vector或sommething,但不知道如何将其转换为vsprintf所期望的va_list或任何其他可以使其工作的替代方法。

有人可以向我提出策略吗?

1 个答案:

答案 0 :(得分:1)

通常它依赖于编译器和平台。您可以查看所选编译器的va_startva_arg等的实现,并使用asm指令以正确的方式将数据推送到堆栈中。

我不会这样做,但是如果你的实现模仿sprintf - 对参数进行循环并一次一个地处理它们,那么这将是更加健壮和可移植的。