namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两 个文件,打开文件就会发现,里面的代码是不一样的。
后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件 不使用后缀.h。因此,当使用时,相当于在c中调用库函数,使用的是全 局命 名空间,也就是早期的c++实现;当使用的时候,该头文件没有定义全局命名空 间, 必须使用namespace std,这样才能正确使用cout。
PS:namespace的使用:
C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。由于namespace的概念,使用C++标准程序库的任何标识符时,可以有三种选择:
1、直接指定标识符。例如std::ostream而不是ostream。完整语句如下:
std::cout << std::hex << 3.4 << std::endl;
2、使用using关键字。
using std::cout;
using std::endl;
以上程序可以写成
cout << std::hex << 3.4 << endl;
3、最方便的就是使用using namespace std;
例如:
#include
#include
#include
using namespace std
这样命名空间std内定义的所有标识符都有效(曝光)。就好像它们被声明为全局变量一样。那么以上语句可以如下写:
cout << hex << 3.4 << endl;因为标准库非常的庞大,所程序员在选择的类的名称或函数名时就很有可能和标准库中的某个名字相同。所以为了避免这种情况所造成的名字冲突,就把标准库中的一切都被放在名字空间std中。但这又会带来了一个新问题。无数原有的C++代码都依赖于使 用了多年的伪标准库中的功能,他们都是在全局空间下的。 所以就有了和 等等这样的头文件,一个是为了兼容以前的C++代码,一个是为了支持新的标准。命名空间std封装的是标准程序库的名称,标准程序库为了和以前的头文件区别,一般不加”.h”。
iostream与iostream.h的区别
时间: 2024-10-03 09:10:12
iostream与iostream.h的区别的相关文章
#include<;iostream>;与#include<;iostream.h>;的区别
转载于祝长洋的BLOG:http://blog.sina.com.cn/s/blog_514b5f600100ayks.html 这两者都有什么不同呢?首先,5年前我们就开始反对把.h符号继续用在标准的头文件中.继续使用过时的规则可不是个好的方法.从功能性的角度来讲,包含了一系列模板化的I/O 类,相反地只仅仅是支持字符流.另外,输入输出流的C++标
关于命名空间的理解---iostream与iostream.h的区别
C++中为了避免名字定义冲突,特别引入了"名字空间的定义",即namespace.当代码中用<iostream.h>时,输出可直接引用cout<<x;<iostream.h>继承C语言的标准库文件,未引入名字空间定义,所以可直接使用. 当代码中引入<iostream>时(C++标准),输出需要引用std::cout<<x;如果还是按原来的方法就会有错,或者直接添加using namespace std; 实例: code1 #
C++ ---->;中include <;iostream>;和include <;iostream.h>;的区别
简单来说: .h的是标准C的头文件,没有.h的是标准C++的头文件,两种都是头文件. 造成这两种形式不同的原因,是C++的发展历史决定的,刚才正好有别的人也问这个问题,这里我再回答一下(注意vs2008和vs2005对标准C++的支持是一样的): 1.以iostream和stdio.h为例,iostream是C++的库,stdio.h是标准C的库. 2.新的C++标准摒弃了.h形式的头文件,所以在vs2005里面是没有iostream.h的头文件的. 3.在早期的vs版本,比如VC6.0,用的还
iostream与iostream.h
iostream与iostream.h 1.iostream是标准的C++库 2.iostream.h是非标准的C++库.如果使用前者,需要搭配using namespace XXX.后者则不需要. include <iostream.h> //非标准输入输出流,没有命名空间的概念 cout<<x; //输出可直接引用 C++中为了避免名字定义冲突,特别引入了"名字空间的定义",即namespace. include <iostream> //标准输
C++中#include包含头文件带 .h 和不带 .h 的区别
C++中#include包含头文件带 .h 和不带 .h 的区别? 如 #include <iostream> 和 #include <iostream.h> 包含的东西有哪些不同? 之前在写C++程序的时候只知道使用 #include <iostream> 的时候,使用函数前要用 using namespace std; 导入命名空间,而 #include <iostream.h> 则不用,这个得看C+ +标准化过程为C++开发者做了哪些有意义的工作. (
头文件---#include<;***.h>;和#include";***.h";的区别
采用"< >"方式进行包含的头文件表示让编译器在编译器的预设标准路径下去搜索相应的头文件,如果找不到则报错. 例如:VS的安装目录\Microsoft Visual Studio 9.0\VC\include下面就包含了标准库的头文件. 第二种方式表示先在工程所在路径下搜索,如果失败,再到系统标准路径下搜索. 所以,特别要注意的是,如果是标准库头文件,那么既可以采用<>的方式,又可以采用" "的方式,而用户自定义的头文件只能采用"
string和string.h的区别
头文件string与string.h的区别 转自http://www.cnblogs.com/Cmpl/archive/2012/01/01/2309710.html 在C++中,#include<iostream>与#include<iostream.h>的区别,前者要使用更新的编译器(其实大部分编译器多比较前卫了,出了有些搞嵌入式的用变态的编译器). 喔,原来iostream是C++的头文件,iostream.h是C的头文件,即标准的C++头文件没有.h扩展名,将以前的C的头文
[转]extern与头文件(*.h)的区别和联系
用#include可以包含其他头文件中变量.函数的声明,为什么还要extern关键字? 如果我想引用一个全局变量或函数a,我只要直接在源文件中包含#include<xxx.h> (xxx.h包含了a的声明)不就可以了么,为什么还要用extern呢?? 这个问题一直也是似是而非的困扰着我许久,经过实践和查找资料,有如下总结: 一.头文件 首先说下头文件,其实头文件对计算机而言没什么作用,她只是在预编译时在#include的地方展开一下,没别的意义了,其实头文件主要是给别人看的. 我做过一个实验,
C++ iostream与iostream.h区别
#include <iostream.h>非标准输入输出流 #include <iostream>标准输入输出流 C++中为了避免名字定义冲突,特别引入了"名字空间的定义",即namespace. 当代码中用<iostream.h>时,输出可直接引用cout<<x;//<iostream.h>继承C语言的标准库文件,未引入名字空间定义,所以可直接使用. 当代码中引入<iostream>时,输出需要引用std::co
1.4 iostream与iostream.h的区别
如果用iostream则需要加命名空间: 如果用iostream.h则不需要加命名空间: 示例: #include<iostream> using namespace std; int main(){ cout << "Hello World!"; return 0; } #include<iostream.h> int main(){ cout << "Hello World!"; return 0; }