为什么不在C++中使用printf()

Why not use printf() in C++(为什么不在C++中使用printf())
本文介绍了为什么不在C++中使用printf()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们中的许多人在学习使用构造函数和析构函数之前很久就学会了使用printf()。因此,当切换到C++时,许多人会坚持使用printf()作为控制台输出。

有时您可以听到:

printf()不好,您应该改用cout <<,因为它是C++

放弃使用printf()并切换到cout <<有什么好处?

推荐答案

C++ faq说明:

[15.1]为什么要使用<iostream>而不是传统的<cstdio>

提高类型安全性、减少错误、允许可扩展性并提供可继承性。 printf()可以说没有被破坏,尽管scanf()容易出错,但它可能是合适的,但是两者在C++I/O的功能方面都是有限的。C++I/O(使用<;<;and>>)相对于C(使用printf()scanf())。

  • 更具类型安全性:使用<iostream>,编译器静态地知道I/O对象的类型。相反,使用"%"字段动态计算类型。

  • 较不容易出错:使用<iostream>,不存在必须与I/O的实际对象一致的冗余"%"令牌。删除冗余消除了一类错误。

  • 可扩展性:C++<iostream>机制允许在不破坏现有代码的情况下I/O新的用户定义类型。想象一下,如果每个人都同时向printf()和scanf()添加新的不兼容的"%"字段?!

  • 可继承:C++<iostream>机制由std::ostreamstd::istream等真实类构建而成。与<cstdio>FILE*不同,这些是真实的类,因此是可继承的。这意味着您可以拥有其他用户定义的内容,它们的外观和行为类似于流,但它们可以做您想做的任何奇怪和奇妙的事情。您可以自动使用由您甚至不认识的用户编写的无数行I/O代码,并且他们不需要知道您的"extended stream"类。

    /li>

这篇关于为什么不在C++中使用printf()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

windeployqt doesn#39;t deploy qwindowsd.dll for a debug application(windeployqt不会为调试应用程序部署qwindowsd.dll)
QLineEdit: Show a processed text, not the entered one, but keep it (custom echo mode)(QLineEdit:显示已处理的文本,而不是输入的文本,但保留它(自定义回显模式))
Showing tooltip in a Qt chart with multiple y axes(在带有多个y轴的Qt图表中显示工具提示)
QTableView, how to change dragging multiple items display(QTableView,如何更改拖动多项显示)
How can I build Qt 5.13.2 with GCC 11.1 on Windows?(如何在Windows上用GCC 11.1构建Qt 5.13.2?)
singleton template as base class in C++(C++中作为基类的Singleton模板)