#include和#include的区别是什么?

威尔亨特 2006-10-12 02:42:41
#include<iostream>时、引用cout必须写std::cout
#include<iostream.h>时、引用cout时不能写std::
引用输入输出流为什么要有两种写法?
...全文
273 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveyhh123 2006-10-12
  • 打赏
  • 举报
回复
<iostream>头文件里头的输入输出流类是用模板template编写的,且所有名字都是放在名称空间std下的。所以cout前要加上std::
<iostream.h>是c++为了兼容c库而设计的。你应该知道c并没有名字空间一说。所以引用cout时不能写std::
飞哥 2006-10-12
  • 打赏
  • 举报
回复
又慢了,以后练打字
呵呵
飞哥 2006-10-12
  • 打赏
  • 举报
回复
C++库直至C++标准出版以前一直放在全局空间,跟普通头文件一样,*.H
不过,c++、标准出来后,情形就不一样了。标准规定,所有C,C++标准库都必须在
名字空间“std,,里进行定义,也就是说?标准保留出一个特定的名字空间,专门放置
c,c++标准库,任何人都不应该在std里定义自己的库。
在std里定义的c库所对应的头文件都没有“.h”后缀,并且在前面多了一个字符
“c”
威尔亨特 2006-10-12
  • 打赏
  • 举报
回复
呵呵、谢谢楼上的、最后一个点我是知道滴
PMsg 2006-10-12
  • 打赏
  • 举报
回复 1
在标准C++以前,都是用#include<iostream.h>这样的写法的,因为要包含进来的头文件名就是iostream.h。标准C++引入了名字空间的概念,并把iostream等标准库中的东东封装到了std名字空间中,同时为了不与原来的头文件混淆,规定标准C++使用一套新的头文件,这套头文件的文件名后不加.h扩展名,如iostream、string等等,并且把原来C标准库的头文件也重新命名,如原来的string.h就改成cstring(就是把.h去掉,前面加上字母c),所以头文件包含的写法也就变成了#include <iostream>。
并不是写了#include<iostream>就必须用using namespace std;我们通常这样的写的原因是为了一下子把std名字空间的东东全部暴露到全局域中(就像是直接包含了iostream.h这种没有名字空间的头文件一样),使标准C++库用起来与传统的iostream.h一样方便。如果不用using namespace std;使用标准库时就得时时带上名字空间的全名,如std::cout << "hello" << std::endl;
#include "iostream"与#include<iostream>的区别:前者先在当前目录找iostream文件,找不到再去系统头文件路径找,后者反之。因此,做为一个良好的习惯,在包含系统头文件时尽量用<>,而在包含自己的工程中的头文件时用""。
威尔亨特 2006-10-12
  • 打赏
  • 举报
回复
为什么不要再用了?
是不是为了避免无意中使用了与库中所定义名字相同的名子而引起的冲突?
这个库怎么理解?
iambic 2006-10-12
  • 打赏
  • 举报
回复
#include <iostream.h>
是旧式写法。
不要再用了。

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧