C++的一个Tip:如何确定snprintf需要多大空间

2019-12-02 13:41:29 浏览数 (1)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/u201011221/article/details/103296000

代码语言:javascript复制
const char *fmt = "sqrt(2) = %f";
int sz = std::snprintf(nullptr, 0, fmt, std::sqrt(2));
std::vector<char> buf(sz   1); // note  1 for null terminator
std::snprintf(&buf[0], buf.size(), fmt, std::sqrt(2));

调用snprintf时,如果传入空指针和0大小的buf_size,返回值是格式化后结果的大小。这个是C 下的写法。

代码语言:javascript复制
const char *fmt = "sqrt(2) = %f";
int sz = snprintf(NULL, 0, fmt, sqrt(2));
char buf[sz   1]; // note  1 for terminating null byte
snprintf(buf, sizeof buf, fmt, sqrt(2));

0 人点赞