有没有办法使用_snprintf_s确定目标缓冲区大小?

时间:2015-09-16 02:31:30

标签: c++ windows

我目前使用putExtra()并且返回缓冲区的所需大小 。我分配它们然后再次调用_snprintf(NULL,0,fmtStr, Str..)来填充缓冲区。但目前{@ 1}}已弃用,_snprintf是推荐的功能。但是according to msdn如果没有事先分配缓冲区,它似乎没有返回长度。

有解决方法吗?

1 个答案:

答案 0 :(得分:1)

在Windows中:在VS2015之前: 利用_vscprintf()来获取扩展格式字符串的大小。分配内存并使用vsnprintf_s()执行实际的缓冲区填充。

Gcc / Windows-VS2015向前: (感谢Harry-Johnston指出这一点)snprintf()应该可用。使用snprintf(NULL,0,...)获取大小,分配mem,然后使用snprintf(buffer,..)来执行实际的缓冲区填充。