;
最好使用标准头文件.
iostream是现在C++中规定的标准,目的在于使C++代码用于移植和混合嵌入时不受扩展名.h的限制,避免因为.h而造成的额外的处理和修改。
iostream包含的基本功能和对应的旧头文件相同,但头文件的内容在名字空间std中。
(在标准化的过程中,库中有些部分的细节被修改了,所以旧头文件和新头文件中的实体不一定完全对应。)
一般情况下应该用这个头文件,而iostream.h则是老式的,以后有可能被淘汰。
在回过头来看看标准程序库,这个程序库涵盖范围相当广大,提过了许许多多好用的功能。
正是因为这样标准程序库中class的名称和函数名与第三方提供的程序库中的class名或是函数名发生名字冲突的可能性大大增大。
为了避免这个问题的发生,标准委员会决定将标准程序库中每一样东西都放在namespace std中。
但是这么做同时有引来了一个新的问题。很多C++程序代码依赖那些已经存在很多年的C++ “准”标准程序库(C++迟迟未标准化才导致这些情况的发生),例如iosteam.h,complex.h等等。
为了解决这个新出现的问题,标准化委员会决定设计一些新的头文件名,给那些穿上std外衣的组件所使用。
把C++头文件的.h去掉,于是就有前面出现的iostream,同样C的头文件也做了相同的处理,同时在前面加上了一个字母c,以表示是C的头文件(感觉上有中种族歧视的感觉)。
同时标准化委员会声明就有的C++头文件将不再列于被支持的名单之中了,而旧有的C头文件为了满足“对C的兼容性”这个古老契约,仍然将继续存活下去。
但是,那些编译器厂商不可能去推翻他们客户的旧有编译器(也跟本不会去这么做),所以那些旧有的C++头文件仍然苟延残喘的活了下来,并不断的扰乱那些C++新兵的心智。
下面就是现在大多数C++开发工具表示头文件的组织状态:
1.旧的C++头文件 比如iostream.h,他们虽然被标准化委员会所抛弃,但由于各大厂商为了各自的商业利益仍然将继续存活下去,这些头文件的内容将不处于namespace std中。
2.新的C++头文件如iostream虽然提供了和旧有头文件相同的功能,但他的内容都并入了namespace std中,从而有效避免了名字污染的问题。
3.标准C的头文件如stdio.h继续获得支持,这类文件的内容并未放在std中。
4.C函数库的技能也有对应的新式C++版本,起名称类似cstdio,这类头文件的内容也有幸穿上了std的外衣。
-------------------------------------------------------------------------------------------------------------------------------------------------------------
参考资料:
http://hi.baidu.com/laddie10/blog/item/079b1d4c32d7d8fcd62afc25.html
http://bbs.sjtu.edu.cn/bbstcon,board,C,reid,1101133248,file,M.1101178603.A.html