【发布时间】:2009-01-12 18:06:13
【问题描述】:
有没有人知道将 printf 样式函数的输出重定向到字符串的安全的好方法?显而易见的方式会导致缓冲区溢出。
类似:
string s;
output.beginRedirect( s ); // redirect output to s
... output.print( "%s%d", foo, bar );
output.endRedirect();
我认为这个问题与问“打印会产生多少个字符?”是一样的。 想法?
【问题讨论】:
-
将之前提出的问题标记为重复是没有意义的。投票重新开放(我们应该关闭另一个重复)。
-
就
size_t nbytes = snprintf(NULL, 0, "%s", name) + 1; /* +1 for the '\0' */ char *str = malloc(nbytes); snprintf(str, nbytes, "%s", name);