繁体   English   中英

在C ++中使用printf

[英]Use of printf in C++

在该网站上搜索“ printf vs cout”,引起了对两者之间区别的讨论,但这不是我想要的。 来自Python,我非常喜欢printf采用字符串格式的方式,如果可能的话,我宁愿避免使用cout

忽略cout并仅使用printf是否被视为不好的做法? 这样做的含义是什么? 在某些情况下不能使用printf情况是什么?

1)您只可以使用printf为基本类型,并为整数真的是只可用于“本地”类型的intlong 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM