C++博客 :: 首页 :: 联系 ::  :: 管理
  163 Posts :: 4 Stories :: 350 Comments :: 0 Trackbacks

常用链接

留言簿(48)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 397022
  • 排名 - 59

最新评论

阅读排行榜

评论排行榜

传统的C函数库中scanf和printf不是类型安全的,另外,scanf/printf系列函数把要读写的变量和控制读写格式的信息分开来,这都是很早的用法啦。iostream的cout和cin则相对高级的多!因为类型安全和扩展性是C++的基石,“《”和“》”也提供操作符重载来输出、输入用户自己定义的数据类型,另外,在传递读和写的对象时采用的语法形式也是相同的。

如:

class Rational {
public:
Rational(int numerator = 0, int denominator = 1);
...
private:
int n, d;// 分子,分母

 

friend ostream& operator<<(ostream& s, const Rational& ); }; ostream& operator<<(ostream& s, const Rational& r) { s<< r.n << '/' << r.d; return s; }
 
但是下列情况下会使用C库函数:
(1)有些iostream的操作实现起来比相应的C stream效率要低,所以不同的选择会给你的程序有可能带来很大的不同。
(2)在标准化的过程中,iostream库在底层做了很多修改,所以对那些要求最大可移植性的应用程序来说,会发现不同的厂商遵循标准的程度也不同。
(3)iostream库的类有构造函数而<stdio.h>里的函数没有,在某些涉及到静态对象初始化顺序的时候,如果可以确认不会带来隐患,用标准C库会更简单实用。
使用了#include <iostream>, 得到的是置于名字空间std下的iostream库的元素;如果使用#include <iostream.h>,得到的是置于全局空间
的同样的元素。在全局空间获取元素会导致名字冲突,而设计名字空间的初衷正是用来避免这种名字冲突的发生。
使用了#include  <iostream> 后面要接:using namespace std;新的c++库舍弃了<iostream.h>,你如果include它,编译器
会提示你找不到这个头文件。
 
 
 
 
posted on 2008-01-15 21:13 sdfasdf 阅读(2403) 评论(3)  编辑 收藏 引用 所属分类: C++

Feedback

# re: Effective C++学习笔记:条款2:尽量用&lt;iostream&gt;而不用&lt;stdio.h&gt;[未登录] 2008-01-16 11:46 cppexplore
挑选log模块的时候 我还是喜欢方便格式化输出的类printf方式,就象ace的log方式,iostream方式的进行格式化输出太不方便了  回复  更多评论
  

# re: Effective C++学习笔记:条款2:尽量用&lt;iostream&gt;而不用&lt;stdio.h&gt; 2008-01-16 14:55 Kouga
呵呵,Log的时候,使用stream的格式化一样方便。  回复  更多评论
  

# re: Effective C++学习笔记:条款2:尽量用&lt;iostream&gt;而不用&lt;stdio.h&gt; 2008-05-23 12:08 lych
http://lych.yo2.cn/articles/%e2%80%9c%e8%90%bd%e5%90%8e%e7%9a%84cout%e4%b8%8e%e5%89%8d%e5%8d%ab%e7%9a%84printf%e2%80%9d.html  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理