我们中的许多人在学习使用构造函数和析构函数之前很久就学会了printf()
。因此,当需要切换到C ++时,许多人会坚持使用printf()
来获得控制台输出。
有时您可以听到:
printf()
不好,你应该使用cout <<
,因为它是C ++
放弃使用printf()
并切换到cout <<
有什么好处?
答案 0 :(得分:3)
C++ faq声明:
[15.1]为什么我应该使用
<iostream>
而不是传统的<cstdio>
?提高类型安全性,减少错误,允许可扩展性并提供可继承性。 printf()可以说是没有被破坏,尽管容易出错,但scanf()可能是适合居住的,但两者都受限于C ++ I / O可以做什么。 C ++ I / O(使用&lt;&lt;&lt;&gt;&gt;)相对于C(使用
printf()
和scanf()
)。
更多类型安全:使用
<iostream>
时,编译器会静态地知道I / O对象的类型。相反,使用“%
”字段动态地计算出类型。不易出错:使用
<iostream>
时,没有冗余的“%
”令牌必须与I / O的实际对象保持一致。删除冗余会消除一类错误。可扩展:C ++
<iostream>
机制允许新的用户定义类型进行I / O而不会破坏现有代码。如果每个人都同时向printf()和scanf()添加新的不兼容的“%
”字段,那么想象一下混乱?!可继承:C ++
<iostream>
机制是从真实的类构建的,例如std::ostream
和std::istream
。与<cstdio>
的{{1}}不同,这些是真正的类,因此是可继承的。这意味着你可以拥有其他用户定义的东西,它们看起来像溪流一样,但它可以做你想要的任何奇怪和奇妙的事情。您可以自动使用由您甚至不知道的用户编写的数以万计的I / O代码行,并且他们不需要知道您的“FILE*
”类。
答案 1 :(得分:3)
cout
更加面向对象并提供了一些优势。但我是一名老派开发人员,对printf()
非常满意。虽然,我现在不写很多控制台应用程序,如果我这样做,我可能会使用printf()
。
这是一个很好的事情:你可以选择你最喜欢的那个。