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

Posted oncealong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++的一个Tip:如何确定snprintf需要多大空间相关的知识,希望对你有一定的参考价值。

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++下的写法。

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));

这个是纯C的。

https://en.cppreference.com/w/cpp/io/c/fprintf

以上是关于C++的一个Tip:如何确定snprintf需要多大空间的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 确定snprintf的缓冲区长度

如何在 C++ 中编写独立于平台的包装函数 [重复]

C++中的千位分隔符

c++学习知识整理

C ++在带有右值缓冲区的ostream中使用snprintf,这是格式正确的吗?

如何确定我的程序需要运行哪些 C++ 可再发行组件?