为什么不在C++中使用printf() [英] Why not use printf() in C++

查看:88
本文介绍了为什么不在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()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆