iostream和iostream.h之间的区别是什么
发布于 2010-06-05 01:42:44
iostream.h被那些提供它的编译器弃用,iostream是C++标准的一部分。
为了明确说明,在当前的C++标准(INCITS ISO IEC 14882 2003)中根本没有提到iostream.h。
编辑:就像@曾傑瑞提到的,不仅现在的标准没有提到,C++的标准也没有提到。
发布于 2010-06-05 02:06:37
iostream是一个标准的头部。H是一个非标准的头文件,它在之前的标准C++中非常常见,并且是iostream的起源。使用iostream.h仍然很常见,可能是为了与较旧的程序一起使用。
如果您的实现具有iostream.h的工作副本,则它可能与iostream相同,只是iostream中的所有内容都在std名称空间中,而iostream.h通常位于名称空间之前,并且不使用它们。
如果您的实现同时具有iostream和iostream.h,则iostream的工作方式可能如下所示:
namespace std
{
#include <iostream.h>
}尽管它不一定是这样写的。
发布于 2016-12-05 13:32:20
第一次创建C++时,标准运行时库中的所有文件都以.h结尾。生活是始终如一的,它是美好的。cout和cin的原始版本位于iostream.h中。当该语言被ANSI委员会标准化后,他们决定将运行时库中的所有函数转移到std命名空间中(这通常是一个好主意)。然而,这带来了一个问题:如果他们将所有函数都转移到std名称空间中,那么所有的旧程序都不能再工作了!
为了解决这个问题,同时保持对旧程序的向后兼容性,引入了一组新的头文件,它们使用相同的名称,但缺少.h扩展名。这些新的头文件的所有功能都在std名称空间中。这样,包含#include <iostream.h>的旧程序不需要重写,而新程序可以#include <iostream>。
在包含来自标准库的头文件时,请确保使用非.h版本(如果存在)。否则,您将使用不再受支持的报头的弃用版本。
此外,许多从C继承而来的库在C++中仍然有用,它们被赋予了c前缀(例如,stdlib.h变成了cstdlib)。这些库中的功能也被移到了std名称空间中,以帮助避免命名冲突。
但是,当您编写自己的头文件时,您应该为它们提供一个.h扩展名,因为您不会将您的代码放在std名称空间中。
规则:使用库的非.h版本(如果存在),并通过std名称空间访问该功能。如果非.h版本不存在,或者您正在创建自己的标头,请使用.h版本
https://stackoverflow.com/questions/2976477
复制相似问题