首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cout和printf

cout和printf
EN

Stack Overflow用户
提问于 2011-02-12 14:07:40
回答 4查看 1.8K关注 0票数 1

可能重复:

printf vs cout in C++

cout和printf有什么区别?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-12 14:10:37

基本上,cout是输出到标准输出的C++方式,而printf是C方式。

C++ iostreams ( cout是其中之一)基于C++类,可扩展以处理新类。换句话说,您可以创建一个名为foo的类,然后执行以下操作:

代码语言:javascript
复制
foo bar;
std::cout << bar << std::endl;

另一方面,printf无法处理新类型,您必须编写函数,为该类型的每个组件调用printf,其中每个组件已经是printf已知的类型(如intchar *)。

printf代码中使用C++是没有任何借口的。我总是说,如果你要使用C++,你应该使用它,而不是沉溺于旧世界:-)如果你想使用printf,坚持使用C。

如果您正在寻找一个示例,说明如何允许您的类在iostreams中使用,请参阅an answer I提供的关于执行此操作的代码的前面的问题。

票数 0
EN

Stack Overflow用户

发布于 2011-02-12 14:13:08

cout会自动进行强制转换,并查找要打印的变量的类型。所以你可以做这样的事情:

代码语言:javascript
复制
int myint = 5;
cout << myint;

cout会发现myint是int并打印出来。对于printf,您必须指定要打印的变量的类型:

代码语言:javascript
复制
int myint = 5;
printf("%d", myint);

此外,cout比printf慢(因为它进行类型检测.),尽管在大多数实际应用程序中,您不会注意到性能差异。

票数 1
EN

Stack Overflow用户

发布于 2011-02-12 14:13:29

printf是用于在stdio库的标准输出上打印数据的函数,C的IO库主要是由于遗留的原因而保存在C++中,尽管有时它仍然很有用。

cout是来自iostreams库的C++流(特别是,它被定义为一个ostream &);iostreams库是执行IO的原生C++方法。

通常,与类似于printf的旧函数相比,使用iostreams更容易、更安全(这要感谢<<操作符重载而不是格式strings+varargs),而且它是执行IO的C++“惯用”方式,因此,除非您有特殊的需要,否则您应该使用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4978469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档