在什么情况下 sprintf 比 stringstream 更受欢迎?

Cra*_*ght 2 c++ visual-c++

有没有人有任何具体的例子,说明为什么在 C++ 环境中更喜欢 sprintf 而不是 stringstream?此外,如果您在 Microsoft 世界中工作,是否有任何理由更喜欢 sprintf 而非 _snprintf?

pad*_*ddy 5

sprintf一直在 C++ 中使用。我发现它更容易使用,特别是当我编写时间戳和其他特殊格式的字符串时。当然,你可以用流修饰符来做到这一点,但它是如此冗长,你无法一眼看出代码实现了什么。

_snprintf如果您绝对知道您不会溢出缓冲区,并且您需要尽可能快的写入或只是不希望额外的参数混乱,那么它会更可取。

说到缓冲区,那是另一回事......通常sprintf当我在堆栈上有一个缓冲区或者我正在写入内存中的现有缓冲区时,我会使用或其变体。我不一定想要分配和复制string对象的开销。

并不是说我不使用ostringstream——我当然会使用(尽管我更经常使用istringstream,相反)……但我更喜欢有两个工具可供我使用,而不是一个。