boost :: format vs sprintf

Apo*_*hay 2 c++ boost

哪一个更好:boost::format或者sprintf?我也想知道哪一个更安全使用.

我知道一个限制sprintf,它格式化一个char[]对象,并且大小char[]应该足以保存格式化的字符串.但是boost::format也有同样的限制.任何人都可以指出我在网上的文件,我会参考boost::format和之间的区别sprintf.

edA*_*a-y 6

在稳健性和类型安全性提升方面::格式是一个明显的赢家.它没有缓冲区大小的问题,因为它使用动态流.参数的类型保留在函数调用中,因此格式化程序可以智能地转换.这也意味着不存在使用不匹配类型拧紧堆栈的问题.此模型中也提供类型转换.

格式的缺点是它的速度和它有点麻烦.对于sprintf可以处理的格式,它的速度比sprintf的速度要低很多.它的语法也比快速调用sprintf更复杂.

对于简单的令牌格式化,我通常使用sprintf.对于复杂的字符串格式化,我倾向于使用boost格式或iostreams.