iostream和iostream.h之间的区别

时间:2010-06-04 17:42:03

标签: c++ iostream header-files

iostreamiostream.h之间有什么区别?

4 个答案:

答案 0 :(得分:41)

iostream.h被提供它的编译器弃用,iostream是C ++标准的一部分。

为了明确说明,在当前的C ++标准(INCITS ISO IEC 14882 2003)中根本没有提到iostream.h

编辑:正如@Jerry所提到的,当前的标准不仅没有提到它,而且没有C ++的标准提及它。

答案 1 :(得分:13)

iostream是标准标题。 iostream.h是一个非标准的标题,在预标准C ++中很常见,是iostream从中演化而来的。将iostream.h放在一边仍然很常见,大概是用于旧程序。

如果你的实现有iostream.h的工作副本,它可能与iostream相同,只是iostream中的所有内容都在std命名空间中,而iostream.h通常在命名空间之前,并且没有使用它们。

如果您的实现同时具有iostream和iostream.h,则iostream可能会像以下一样工作:

namespace std
{
#include <iostream.h>
}

虽然这不一定是它的写法。

答案 2 :(得分:8)

  

首次创建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://www.learncpp.com/cpp-tutorial/19-header-files/

答案 3 :(得分:0)

对于初学者来说,这将是一个更简单的答案!

文件“ iostream”是一个标准的C ++头文件,包含输入输出流和函数的声明,并提供包装cin和cout供其使用。因此,此标头中提供了所有基本的I / O函数包装器,并且标头还将包含缓冲区声明和其他方法的其他标头组合为一个。该头文件已升级为提供类型安全的功能和异常处理。文件“ iostream.h”是1996年之前上述标头的不推荐使用的版本,当时C ++尚未标准化。它在现代编译器中不再可用,只能在Turbo C中找到。是一个指令,用于指定编译器将std名称空间用于标准函数(如果已使用)。当C ++标准化时,引入了名称空间,以避免名称冲突并防止歧义。现在,为了将标准标头函数与其余函数区分开,所有这些函数都被限定在标准名称空间中,并且从标头名称中删除了.h,作为标头标准化的标志。现在,要使用这些功能,必须包含标头并使用std ::限制名称的范围。但是,由于这样做可能很麻烦,因此引入了using指令,以在每次使用标准函数时都简单地排除std ::的类型。

此致

TechTIQ Solutions