我们中的许多人printf()在学会使用构造函数和析构函数之前很久就学会了使用。因此,当需要切换到 C++ 时,许多人会坚持printf()使用控制台输出。
有时你会听到:
printf()不好,你应该cout <<改用,因为它是 C++
放弃使用printf()而改用 有cout <<什么好处?
C++ 常见问题说明:
[15.1] 为什么我要使用
<iostream>而不是传统的<cstdio>?提高类型安全性、减少错误、允许可扩展性并提供可继承性。printf() 可以说没有损坏,并且 scanf() 尽管容易出错,但可能是宜居的,但是两者在 C++ I/O 可以做什么方面都受到限制。C++ I/O(使用 << 和 >>)是相对于 C 的(使用
printf()和scanf())。
更类型安全:使用
<iostream>,编译器静态知道被 I/O 处理的对象类型。相反,使用“%”字段来动态确定类型。不易出错:使用
<iostream>,没有多余的“%”标记必须与被 I/O 的实际对象一致。删除冗余会删除一类错误。可扩展:C++
<iostream>机制允许在不破坏现有代码的情况下对新的用户定义类型进行 I/O。想象一下,如果每个人都同时向%printf() 和 scanf()添加新的不兼容的 " " 字段,会是多么混乱?!可继承:C++
<iostream>机制是从真实的类构建的,例如std::ostream和std::istream。与<cstdio>'s不同FILE*,这些是真正的类,因此可以继承。这意味着您可以拥有其他用户定义的东西,它们的外观和行为都像流,但可以做任何你想做的奇怪和美妙的事情。您会自动使用由您甚至不认识的用户编写的无数行 I/O 代码,而且他们不需要知道您的“extended stream”类。