iostream.h为非法的输入输出流,.h的头文件是C语言格式的,由于当时还没有命名空间这个说法,所以也就不存在std这个命名空间标示符。所以用iostream.h也就用不着std或者using namespace std.

iostream为标准输入输出流,它是C++规范的带有命名空间的头文件,它包含在std命名空间内。

iostream流包含cin和cout输入输出流,使用cout的时候前面必须加std

对于编码,除了是否加std或者using namespace 之外,其他编码基本一样,对于不同平台,前者不可移植。

通告比较我们了解到 iostream是C++格式的头文件,而iostream.h是C语言格式的头文件,由于C++格式的iostream是规范的带有命名空间的头文件,所以在使用iostream标准库中的cout对象时,要加上命名空间标示符std,而C格式的非标准的输入输出流iostream.h则不用.

 

命名空间这个新概念从C++开始才真正引入,下面介绍命名空间的作用。

C++引入命名空间 (namespace)的目的是为了减少和避免命名冲突,程序较大时,就很难避免重名,特别是多人合作的情况下。过去C语言中的解决方法是靠人为的注意。并且加长名字,避免重名。这样做会使得一些名字看上去没有意义或者难以理解,而程序员在写程序时,也会受这个问题的限制,不能自由地命名自己使用的变量或者函数。通过使用namespace,可以解决这一问题,这就是C++引入namespace这个概念的好处.

 

举一个形象的例子:

有两个学生,一个叫小王,一个叫小李,他们都各自拥有一本相同的语文书,为了区分这两本书,他们就要在书的封皮上写上自己的名字---小王或者小李。同理,我们调用cout对象时也要在前边写上cout所属的命名空间"std::",而在代码里加 using namespace std,就可以不用再加"std::"。但是最好的方法就是不用 using namespace std,而是用 using std::cout,这样可以避免命名重复,因为不同的名字在不同的命名空间内,将它们都释放出来时,若不小心会造成使用错误库函数中的对象的情况。