百度知道里搜的答案:
ostream.h
是很久以前的头文件,当时新的C++标准还没有出炉,所以依然保持和旧有的C风格的头文件一样的后缀“.h”;然而,新C++标准出台后,为了和以前的,特别是C语言中的头文件以示区别,统统将“.h”后缀去掉了。并且,还引入了“命名空间”的概念——namespace
这是因为随着库的不断增大,难免会遇到“命名冲突”的问题,引入命名空间,就是说:某个变量名或常量名只在它所属的命名空间下,才是有意义的。离开了它的命名空间,该名称不可用——这就解决了命名冲突的问题。
因此,当你阅读一些旧的书籍时,会发现大多使用
#include <iostream.h>
因为当时新标准还没有出台;而阅读近几年的书籍时,都是
#include <iostream>
using namespace std;
意思是——使用标准的全局命名空间!若你依然使用带后缀“.h”的预处理指令,那么编译器可能会通知:“XXX.h”文件不存在。
简言之,就是说,当你使用C语言的头件时,就带上“.h”;若使用C++的头文件时,就不要带后缀,而是声明使用所属的命名空间,一般写上
using namespace std;
这句就可以了。