cin cout与printf scanf的效率差异

@SmartSi
博客专家认证
2014-05-02 11:15:07
详求他们之间的差异.........
...全文
325 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-05-04
  • 打赏
  • 举报
回复
乍看起来c++的cin、cout在输入、输出上比c的scanf、printf简单,不用格式控制符! 但是不用格式控制符,输入输出恰好是你期望的格式的时候好说;等到输入输出不是你期望的格式的时候,你就会觉得还是用格式控制符更方便、更靠谱。 摒弃cin、cout! 使用scanf、printf。
飞天御剑流 2014-05-04
  • 打赏
  • 举报
回复
怎么没人提到iostream的扩展性?这才是iostream真正出彩的地方,它的扩展能力无可匹敌,而stdio几乎为零。
ri_aje 2014-05-04
  • 打赏
  • 举报
回复
cin/cout 自动识别类型,调用正确的重载,这个比 scanf/printf 安全。 cout 的控制符是 io manipulator,使用起来比较麻烦,格式化输入方面,cin 更没有 scanf 方便。 有个叫 boost::format 可以配合解决 cin/cout 格式的问题。
罗博士 2014-05-03
  • 打赏
  • 举报
回复
引用 1 楼 supermegaboy 的回复:
比较两者的性能是没有意义的,况且谁性能高一点是实现相关的,有的环境是cin、cout好一点,有的则是printf、scanf好一点。
什么情况下cin、cout比printf和scanf的速度要快? 我碰到的情况后者都比前者快。
mujiok2003 2014-05-03
  • 打赏
  • 举报
回复
cin/cout通常比printf/sanf的安全性和可扩展性高。 性能的话, IO性能本来就都比较慢,只是在比较谁更慢而已。 如果在关注性能的程序中, 通常都用系统提供API完成IO操作。 C/C++提供的标准IO流主要考虑通用性,可移植性, 易用性。
飞天御剑流 2014-05-03
  • 打赏
  • 举报
回复
引用 2 楼 taodm 的回复:
cin和scanf是完全没有比较意义的,因为功能的健壮强度是不同的。 printf一般比cout高。
引用 3 楼 u012061345 的回复:
[quote=引用 1 楼 supermegaboy 的回复:] 比较两者的性能是没有意义的,况且谁性能高一点是实现相关的,有的环境是cin、cout好一点,有的则是printf、scanf好一点。
什么情况下cin、cout比printf和scanf的速度要快? 我碰到的情况后者都比前者快。[/quote] 在g++中,cout通常比printf的性能高。 影响cout的性能通常有两个因素,一是某些实现例如VS用printf实现cout,当然printf比cout快;二是iostream默认情况下是与stdio关联在一起的,就是cout在运行时,会刷新stdio,这个操作会拖慢cout的性能。但g++的cout并不是用printf实现的,即使不去掉与stdio的关联,cout已经比printf要快,在我的三星7寸笔记本中,通常要快三分一左右,如果通过std::ios_base::sync_with_stdio( false )去掉与stdio的关联,甚至比printf快几乎十倍。
碼上道 2014-05-03
  • 打赏
  • 举报
回复
引用 3 楼 u012061345 的回复:
[quote=引用 1 楼 supermegaboy 的回复:] 比较两者的性能是没有意义的,况且谁性能高一点是实现相关的,有的环境是cin、cout好一点,有的则是printf、scanf好一点。
什么情况下cin、cout比printf和scanf的速度要快? 我碰到的情况后者都比前者快。[/quote] 如果只是一个printf("字符串,没有格式控制符");这样的我感觉printf要效率高一点。当然也要看实际情况
taodm 2014-05-02
  • 打赏
  • 举报
回复
cin和scanf是完全没有比较意义的,因为功能的健壮强度是不同的。 printf一般比cout高。
飞天御剑流 2014-05-02
  • 打赏
  • 举报
回复
比较两者的性能是没有意义的,况且谁性能高一点是实现相关的,有的环境是cin、cout好一点,有的则是printf、scanf好一点。

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧