首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iostream和iostream.h的区别

iostream和iostream.h的区别
EN

Stack Overflow用户
提问于 2010-06-05 01:42:03
回答 4查看 42.2K关注 0票数 46

iostreamiostream.h之间的区别是什么

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-05 01:42:44

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

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

编辑:就像@曾傑瑞提到的,不仅现在的标准没有提到,C++的标准也没有提到。

票数 49
EN

Stack Overflow用户

发布于 2010-06-05 02:06:37

iostream是一个标准的头部。H是一个非标准的头文件,它在之前的标准C++中非常常见,并且是iostream的起源。使用iostream.h仍然很常见,可能是为了与较旧的程序一起使用。

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

如果您的实现同时具有iostream和iostream.h,则iostream的工作方式可能如下所示:

代码语言:javascript
复制
namespace std
{
#include <iostream.h>
}

尽管它不一定是这样写的。

票数 15
EN

Stack Overflow用户

发布于 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://www.learncpp.com/cpp-tutorial/19-header-files/

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2976477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档