[英]Use of printf in C++
在该网站上搜索“ printf vs cout”,引起了对两者之间区别的讨论,但这不是我想要的。 来自Python,我非常喜欢printf
采用字符串格式的方式,如果可能的话,我宁愿避免使用cout
。
忽略cout
并仅使用printf
是否被视为不好的做法? 这样做的含义是什么? 在某些情况下不能使用printf
情况是什么?
1)您只可以使用printf
为基本类型,并为整数真的是只可用于“本地”类型的int
, long int
像等东西uint32_t
需要便携式打印颇为尴尬和麻烦宏。 完全不支持用户定义的类型。
2) printf
不是类型安全的。 也就是说,代码的正确性取决于格式化字符串的值 ,并且您不能仅凭静态分析就无法确定程序是否格式正确。 这是C类型系统的根本缺陷,C ++可以避免“适当”的缺陷。
就是说, printf
(或者也许是(v)snprintf
)通常比iostream快很多,因此在高性能环境(例如高频日志记录)中,它是一种非常有竞争力的选择。 但是,如果您只是偶尔进行输出操作,则应该使用iostream或其他一些灵活的,类型安全的,惯用的C ++方法。 (当然,iostreams可能是C ++最可怕的角落之一。)
忽略cout并仅使用printf是否被视为不好的做法?
不,如果您更喜欢使用printf
,请继续。
这样做的含义是什么?
没有。 C ++的方法是使用cout
,因为它应该更简单。
在某些情况下不能使用printf的情况是什么?
我怀疑您会发现这种情况。 如果这样做的话,编写它们的人会太主观。
cout
是类型安全的。 cout
是一个ostream
,因此它与其他ostream
s具有相同的接口-例如,您可以提供新的重载来打印foo
。
printf
格式字符串有时比cout
的格式化方法更好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.