传统的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它,编译器
会提示你找不到这个头文件。