使用不带缓冲区变量的冲刺

Using sprintf without a buffer variable

本文关键字:变量 冲刺 缓冲区      更新时间:2023-10-16

有没有办法在没有预定义变量的情况下使用sprintf()

而不是:

char buffer[80];
sprintf(buffer, "%d",i );
myfunc(buffer);

我想使用:

myfunc(stringformat("%d",i));

C++,意味着没有OOP的类C函数。

您是否必须使用与printf/sprintf中相同的格式规则?如果是这样,则没有标准的库函数可以做到这一点,您可能需要使用后台snprint编写自己的函数(在大幅面字符串的边缘情况下,您可能需要迭代越来越大的缓冲区大小,或者只是限制输出的最大支持大小(。

如果您需要类似但格式不同的内容 - 最早出现在标准库中的是 C++20:std::format。还有标准库的替代品,例如boost::format,folly::sformat。

此外,在许多情况下使用stringstream更方便。