iostream和iostream.h之间的区别

ckv*_*ckv 39 c++ iostream header-files

iostream和之间有什么区别iostream.h

Bri*_*ndy 43

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

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

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

  • 这个答案是 iostream.h 和 iostream 之间的区别吗?我不这么认为。 (2认同)

Dav*_*ley 14

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

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

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

namespace std
{
#include <iostream.h>
}
Run Code Online (Sandbox Code Playgroud)

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


小智 8

首次创建C++时,标准运行时库中的所有文件都以.h结尾.生活是一致的,而且很好.cout和cin的原始版本生活在iostream.h中.当语言由ANSI委员会标准化时,他们决定将运行时库中的所有函数移动到std命名空间(这通常是一个好主意).然而,这提出了一个问题:如果他们将所有函数移动到std命名空间,那么旧的程序都不会再工作了!

为了解决这个问题,在保持旧程序的向后兼容性的同时,引入了一组使用相同名称但缺少.h扩展名的新头文件.这些新的头文件在std命名空间内具有所有功能.这样,包含的旧程序#include <iostream.h>不需要重写,而较新的程序可以#include <iostream>.

当您包含标准库中的头文件时,请确保使用非.h版本(如果存在).否则,您将使用不再受支持的标头的弃用版本.

此外,从C继承的许多在C++中仍然有用的库都被赋予了ac前缀(例如stdlib.h变成了cstdlib).这些库的功能也被移动到std命名空间,以帮助避免命名冲突.

但是,当您编写自己的头文件时,应该为它们提供所有.h扩展名,因为您不会将代码放在std命名空间中.

规则:如果存在,则使用库的非.h版本,并通过std命名空间访问该功能.如果非.h版本不存在,或者您正在创建自己的标题,请使用.h版本

资料来源:https://www.learncpp.com/cpp-tutorial/19-header-files/