条款 2:尽量用<iostream>而不用<stdio.h>
scanf 和 printf 很轻巧,很高效,你也早就知道怎么用它们,这我承 认。但尽管他们很有用,事实上 scanf 和 printf 及其系列还可以做些改进。尤其 是,他们不是类型安全的,而且没有扩展性。因为类型安全和扩展性是 C++的 基石,所以你也要服从这一点。另外,scanf/printf 系列函数把要读写的变量和 控制读写格式的信息分开来,就象古老的 FORTRAN 那样。是该向五十年代说 诀别的时候了!
如果编译器同时支持 <iostream>和 <iostream.h>,那头文件名的使用会很微妙。例如,如果使用了#include <iostream>, 得到的是置于名字空间 std(见条款 28)下的 iostream 库的元素; 如果使用#include <iostream.h>,得到的是置于全局空间的同样的元素。在全 局空间获取元素会导致名字冲突,而设计名字空间的初衷正是用来避免这种名 字冲突的发生。还有,打字时<iostream>比<iostream.h>少两个字,这也是很 多人用它的原因。:)