2

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

代替:

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

我想使用:

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

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

4

1 回答 1

0

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

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

而且在很多情况下使用stringstream起来更方便。

于 2020-06-14T04:42:28.600 回答