iostream与iostream.h的区别

合集下载

c++ IOStream

c++ IOStream

c语言的标准输入输出库是stdio.h是一个函数库而不是类库。

其中包括了我们最常使用的scanf printf都是一些独立的全局函数,因为C语言是不支持类的。

c++的标准输入输出库iostream是一个类库,以类的形式组织,使用该库中的类要先引用命名空间:using nam espace std;最常使用的是cin和cout,这两个都是对象,cin是istream类的对象,cout是ostream类的对象,而输入的cin>>与输出时的cout<<中的左移<<与右移>>分别是istream类与ostream类的操作符重载。

iostream库里面创建了3个标准流对象:1cin表示标准输入的istream对象,cin可以使我们从设备读取数据。

2cout表示标准输出的ostream对象,cout可以使我们向设备写入数据。

3cerr表示标准错误的ostream对象,cerr是导出程序错误消息的地方,只能向屏幕设备写数据。

标准的流对象都有默认的设备:cout<<data;cout默认的设备是显示器缓冲区。

cin>>data;cin默认的设备是键盘缓冲区。

iostream库由以下几个库组成:fstream,iom ainip,ios,iosfwd,iostream,istream,ostream, sstream,stream buf,strstream。

istream用来访问操作系统的输入流,ostream访问操作系统的输出流,iostream同时继承了这两个类。

在ostream类中,重载了许多的左移<<操作符,对每种基本数据类型都做了重载,比如&ostream operator<<(ostream&tem p,int source);&ostream operator<<(ostream&tem p,char source);&ostream operator<<(ostream&tem p,char*source);由于以上重载返回的数据类型都是ostream的引用,ostream又可以作为左值,所以可以实现iostream库不仅支持终端设备的输入输出,还支持文件的输入输出,和文件有关的输入输出类声明在fstream头文件中,有三个类负责文件的输入输出1)ifstream类:从istream类派生。

stdlib.h和cstdlib的区别,stdlib.h和stdio.h的区别

stdlib.h和cstdlib的区别,stdlib.h和stdio.h的区别

stdlib.h和cstdlib的区别,stdlib.h和stdio.h的区别⼀、stdlib.h和cstdlib的区别C语⾔中是有#include <stdlib.h> 的。

这是C语⾔标准的包含库的头⽂件stdlib.h的语句。

在代码中引⽤此句后,就可以使⽤stdlib.h中的函数,⽽不会出现未声明的警告。

stdlib.h是C语⾔库头⽂件之⼀,包含了以下函数:1 字符串转换为数字的函数,包括atoi, atof, strtol等。

2 随机数函数,包括srand, rand等。

3 内存分配释放函数,如malloc,calloc,realloc,free等。

4 程序运⾏控制函数,如exit, abort等。

5 系统访问相关函数,如printenv, setenv,system等。

6 常⽤算法函数,如qsort, bsearch, abs,div等。

在C++中也可以使⽤#include <stdlib.h>,因为C++兼容了C语⾔中的操作。

不过⼀般更推荐使⽤C++风格的头⽂件,即#include <cstdlib>。

cstdlib实现了stdlib.h中的所有功能,不过是按照C++的⽅式写的,所以与C++语⾔可以更好的配合。

⼆、stdlib.h和stdio.h的区别(⼀)定位不同1、stdlib.h,是 standard library 标准库头⽂件,定位在通⽤⼯具函数。

2、stdio.h,是 standard input&output 标准输⼊输出头⽂件,定位在标准的输⼊输出⼯具函数。

(⼆)封装函数不同1、stdlib.h主要封装了malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等函数。

2、stdio.h主要封装了getchar()、putchar()、scanf()、printf()、gets()、puts()、sprintf()等函数。

C++中#include包含头文件带 .h 和不带 .h 的区别

C++中#include包含头文件带 .h 和不带 .h 的区别

C++中#include包含头文件带.h 和不带.h 的区别?如#include <iostream> 和#include <iostream.h> 包含的东西有哪些不同?之前在写C++程序的时候只知道使用#include <iostream> 的时候,使用函数前要用using namespace std; 导入命名空间,而#include <iostream.h> 则不用,这个得看C++标准化过程为C++开发者做了哪些有意义的工作。

C++标准化过程中,其中一个环节,解决了以下问题:(1)C++增加了名称空间概念,借以将原来声明在全局空间下的标识符声明在了namespace std下。

(2)统一C++各种后缀名,如.h、.hpp、.hxx等。

标准化之前的头文件就是带后缀名的文件,标准化后的头文件就是不带后缀名的文件。

C++ 98 规定用户应使用新版头文件,对旧版本头文件不在进行强制规范,但大多数编译器厂商依然提供旧版本头文件,以求向下兼容。

也就是说带.h 的头文件是旧标准的,如果想用新的标准的头文件就不要带.h。

另外,为了和C语言兼容,C++标准化过程中,原有C语言头文件标准化后,头文件名前带个c字母,如cstdio、cstring、ctime、ctype等等。

这些头文件都可以在C:\Program Files\Microsoft Visual Studio 10.0\VC\include这个目录下找到(以VC2010为例)。

也就是说,我们如果要用C++标准化了的C语言头文件,就得作如下的转换#include <stdio.h> --> #include <cstdio>#include <stdlib.h> --> #include <cstdlib>#include <string.h> --> #include <cstring>还要提及的一点是,我在看C++标准库的时候,看到一个特殊情况<memory.h> 和<memory>,这两个头文件是完全不同的,因为我发现<memory.h>头文件件包含了<mem.h>;而<memory> 包含<memory.stl>。

c++头文件iostream与iostream.h的区别

c++头文件iostream与iostream.h的区别

iostream.h和iostream 区别C++中新定义的方法都是有名字空间的比如cout就属于std名字空间如果include头文件的时候加上.h,默认会using namespace 否则需要自己加上using namespace XXX 对于C中已经定义的方法如printf,没有影响的iostream.h是包含输入/输出流处理的头文件,iostream就什么都不是了但用iostream要加名词空间namespace#include<iostream.h>或者是#include<iostream>using namespace std;二者都行#include<iostream.h>是C语言中比较通用的#include<iostream>using namespace std;是C++中比较通用的#include <iostream.h>这样写,里面的函数都是全局函数.不加.h的是现在C++中规定的标准,目的在于使C++代码用于移植和混合嵌入时不受扩展名.h的限制,避免因为.h而造成的额外的处理和修改而加.h的是c语言的用法,但是在c++中也支持这种用法,主要是为了向下兼容c 的内容,我们平时尽量不用这种方法iostream是现在C++中规定的标准,目的在于使C++代码用于移植和混合嵌入时不受扩展名.h的限制,避免因为.h而造成的额外的处理和修改。

iostream包含的基本功能和对应的旧头文件相同,但头文件的内容在名字空间std中。

(在标准化的过程中,库中有些部分的细节被修改了,所以旧头文件和新头文件中的实体不一定完全对应。

)一般情况下应该用这个头文件,而iostream.h则是老式的,以后有可能被淘汰。

经常在CSDN以及其他之类的技术论坛上问关于C++ 头文件的问题。

提出这些问题的往往就是那些刚学C++的新手。

当初我是菜鸟的时候也问过类似的问题。

c语言中include的用法

c语言中include的用法

c语言中include的用法C语言作为一门新型高级编程语言,在计算机软件编程中具有较为广泛的应用和实现。

下面就跟你们详细介绍下c语言中include的用法,希望对你们有用。

c语言中include的用法如下:1 iostream与iostream.h的区别:#include &lt;iostream.h&gt; // 这个就是1998年标准化以后的标准头文件#include &lt;iostream&gt; // 这个就是标准化以前的头文件更本质上的区别就是iostream把标准C++库的组件放在一个名位std的namespace里面。

而相对的iostream.h则将这些标准组件放在全局空间里,同时在标准化以后旧有的C标准库也已经经过改造了。

使用前者,就需要在代码中添加语句:using namespace std;即:#include &lt;iostream.h&gt; ==#include &lt;iostream&gt;+ using namespace std;2 #include、#include&lt;xxx.h&gt; 与#include “xxx.h”的区别:1&gt;,#include&lt;xxx.h&gt;:系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找。

2&gt;,#include “xxx.h”:用户自定义的文件用双引号括起来,编译器首先会在用户目录下查找,然后在到C++安装目录(比如VC中可以指定和修改库文件查找路径,Unix和Linux中可以通过环境变量来设定)中查找,最后在系统文件中查找。

3 #ifndef /#define/ #endif避免头文件的重定义在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时,就会出现大量“重定义”的错误。

c语言中include的用法

c语言中include的用法

c语言中include的用法C语言作为一门新型高级编程语言,在计算机软件编程中具有较为广泛的应用和实现。

下面小编就跟你们详细介绍下c语言中include的用法,希望对你们有用。

c语言中include的用法如下:1 iostream与iostream.h的区别:#include <iostream.h> // 这个就是1998年标准化以后的标准头文件#include <iostream> // 这个就是标准化以前的头文件更本质上的区别就是iostream把标准C++库的组件放在一个名位std的namespace里面。

而相对的iostream.h则将这些标准组件放在全局空间里,同时在标准化以后旧有的C标准库也已经经过改造了。

使用前者,就需要在代码中添加语句:using namespace std;即:#include <iostream.h> ==#include <iostream>+ using namespace std;2 #include、#include<xxx.h> 与#include “xxx.h”的区别:1>,#include<xxx.h>:系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找。

2>,#include “xxx.h”:用户自定义的文件用双引号括起来,编译器首先会在用户目录下查找,然后在到C++安装目录(比如VC 中可以指定和修改库文件查找路径,Unix和Linux中可以通过环境变量来设定)中查找,最后在系统文件中查找。

3 #ifndef /#define/ #endif避免头文件的重定义在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时,就会出现大量“重定义”的错误。

在头文件中实用#ifndef #define #endif能避免头文件的重定义。

iostream与iostream.h的区别详细解析

iostream与iostream.h的区别详细解析

iostream与iostream.h的区别详细解析C++的标准类库被修订了两次,有两个标准 C92和C99,这两个库现在都在并⾏使⽤,⽤ .h 包含的是c92 ,不带 .h 的是c99的头⽂件,对于普通⽤户来说这两者没有什么区别,区别是在内部函数的具体实现上。

旧的C++头⽂件是官⽅明确反对使⽤的,但旧的C头⽂件则没有(以保持对C的兼容性)。

据说从 Visual C++ .NET 2003 开始,移除了旧的 iostream 库。

其实编译器制造商不会停⽌对客户现有软件提供⽀持,所以在可以预计的将来,旧的C++头⽂件还会嚣张⼀段时间。

如果能明⽩字符串头⽂件的使⽤,举⼀反三,其他的也差不多会⽤了:<string.h>是旧的C/C++头⽂件,对应的是基于char*的字符串处理函数;<string>是包装了std的C++头⽂件,对应的是新的strng类;<cstring>是对应旧的C头⽂件的std版本。

如果编译器都同时⽀持< iostream >和< iostream.h >,那使⽤#include < iostream >,得到的是置于名字空间std下的iostream 库的元素;如果使⽤#include < iostream.h >,得到的是置于全局空间的同样的元素。

在全局空间获取元素会导致名字冲突,⽽设计名字空间的初衷正是⽤来避免这种名字冲突的发⽣。

想象讯雷下载软件⼀样,先从服务器确定下载⽂件的⼤⼩,初始时即保存⽂件,全部填充0,多个线程下载数据直接写⼊⽂件,对⾃⼰线程负责下载的那段⽂件⽚的0进⾏改写,其中就涉及到⽂件共享写的操作vc7.1<fstream> 已经不⽀持 filebuf::sh_read等关键字,不知在vc7下若要⽤⽂件流来对⽂件进⾏⾮独占读和写操作该如何实现?⽽:vc6.0中的iostream.h <fstream.h>filebuf::sh_readfilebuf::sh_writefilebuf::sh_notefilebuf::sh_openprot⽆论⾃⼰是⽤vc6或者vc7的IDE当⽤到标准的输⼊输出和⽂件流时都是:include<iostream>include<fstream>using namespace std;A:include<iostream.h>include<fstream.h>B:include<iostream>include<fstream>如果⽤了<iostream>,则⼀定要引⼊命名空间,即"using namespace std;".如果⽤了<iostream.h>,则不那引⼊命名空间,否则会引起编译错误,提⽰找不到命名空间,例程如下://情况⼀:使⽤<iostream>和命名空间#include <iostream>using namespace std;int main(){cout<<"<iostream> need to use namespace std!/n";return 0;}输出:<iostream> need to use namespace std!Press any key to continue//情况⼆:使⽤<iostream.h>,不引⼊命名空间#include <iostream.h>//using namespace std;int main(){cout<<"<iostream> need to use namespace std!/n";return 0;}输出:<iostream> need to use namespace std!Press any key to continue//情况三:使⽤<iostream.h>,引⼊命名空间,这时候编译出错#include <iostream.h>using namespace std;int main(){cout<<"<iostream> need to use namespace std!/n";return 0;}编译错误信息:error C2871: 'std' : does not exist or is not a namespace从 Visual C++ .NET 2003 开始,移除了旧的 iostream 库。

includestdio.h和includeiostream.h的区别

includestdio.h和includeiostream.h的区别

includestdio.h和includeiostream.h的区别stdio 是C标准库⾥⾯的函数库对应的基本都是标准输⼊输出等等C语⾔常⽤库的定义iostream是C++标准库的头定义,对应的基本上是C++的输⼊输出相关库定义开发C程序⽤Stdio, C++⽤Stdio/iostream 都可以。

C++时,推荐使⽤#include<iostream>using namespace std;是的,scanf和printf很轻巧,很⾼效,你也早就知道怎么⽤它们,这我承认。

但尽管他们很有⽤,事实上scanf和printf及其系列还可以做些改进。

尤其是,他们不是类型安全的,⽽且没有扩展性。

因为类型安全和扩展性是C++的基⽯,所以你也要服从这⼀点。

另外,scanf/printf系列函数把要读写的变量和控制读写格式的信息分开来,就象古⽼的FORTRAN那样。

是该向五⼗年代说诀别的时候了!不必惊奇,scanf/printf的这些弱点正是操作符>>和<<的强项:int i;Rational r;// r 是个有理数...cin >> i >> r;cout << i << r;上⾯的代码要通过编译,>>和<<必须是可以处理Rational类型对象的重载函数(可能要通过隐式类型转换)。

如果没有实现这样的函数,就会出错(处理int不⽤这样做,因为它是标准⽤法)。

另外,编译器⾃⼰可以根据不同的变量类型选择操作符的不同形式,所以不必劳你去指定第⼀个要读写的对象是int⽽第⼆个是Rational。

另外,在传递读和写的对象时采⽤的语法形式相同,所以不必象scanf那样死记⼀些规定,⽐如如果没有得到指针,必须加上地址符,⽽如果已经得到了指针,⼜要确定不要加上地址符。

这些完全可以交给C++编译器去做。

编译器没别的什么事好做的,⽽你却不⼀样。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

iostream与iostream.h的区别
iostream 的意思是输入输出流
直接点说就是in(输入) out(输出) stream(流)
取in out 的首字母与stream 合成[编辑本段]C++语言中
#include<iostream>是标准的C++头文件,任何符合标准的C++开发环境都有这个头文件。

在旧的标准C++中,使用#include<iostream.h>
但在新标准中,用#include<iostream>,而且在VS中编程的同时要注意要添加:
using namespace std;
using namespace std详解
一:
<iostream>和<iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。

后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。

因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。

二:
所谓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 <iostream>
#include <sstream>
#include <string>
using namespace std;
这样命名空间std内定义的所有标识符都有效(曝光)。

就好像它们被声明为全局变量一样。

那么以上语句可以如下写:
cout << hex << 3.4 << endl;
因为标准库非常的庞大,所以程序员在选择的类的名称或函数名时就很有可能和标准库中的某个名字相同。

所以为了避免这种情况所造成的名字冲突,就把标准库中的一切都放在名字空间std中。

但这又会带来了一个新问题。

无数原有的C++代码都依赖于使用了多年的伪标准库中的功能,他们都是在全局空间下的。

所以就有了<iostream.h>和<iostream>等等这样的头文件,一个是为了兼容以前的C++代码,一个是为了支持新的标准。

命名空间std封装的是标准程序库的名称,标准程序库为了和以前的头文件区别,一般不加".h"。

相关文档
最新文档