有没有人知道将 printf 样式函数的输出重定向到字符串的安全的好方法?显而易见的方式会导致缓冲区溢出。
类似:
string s;
output.beginRedirect( s ); // redirect output to s
... output.print( "%s%d", foo, bar );
output.endRedirect();
我认为这个问题与问“打印会产生多少个字符?”是一样的。 想法?
最佳答案
你可以使用:
std::snprintf
如果您正在使用 char*
std::stringstream
如果您想使用字符串(与 printf 不同,但可以让您使用普通的流函数轻松操作字符串)。
boost::format
如果你想要一个类似于 printf 的函数来处理流。 (根据评论中的jalf)
fmt::format
自 c++20 std::format
起已标准化
关于c++ - 安全地将 printf 打印到字符串的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/436367/