c、c++的发展历史:
1973年,美国贝尔实验室的D.M.RITCHIE改进了b语言,形成了c语言,c语言是面向过程的,只有函数库。
在20世纪80年代初期,贝尔实验室的Bjarne Stroustrup发明并实现了c++(c with classses)。刚开始c++只是作为c的加强版,不断添加新特性,从刚开始的添加类,到添加虚函数,运算符重载,多重继承,模板,异常,RTTI,命名空间的等。直到1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC 1988-1998。C++是具有国际标准的编程语言,通常称作ANSI/ISOC++。
c++标准库包含了完整的c标准库和一些新的库,具体如下图:
关于#include<iostream.h>和#include<iostream> using namespace std;的理解:
c语言的库文件都是.H结尾的,c++是从20世纪80年代发展的,起初作为c的补充,都是把类和函数等以与c语言相同形式存放在.H头文件中的,就产生了iostream.h、string.h等类型的c++库文件(其中的函数和变量都是全局的)。
后来由于c++成为了一种标准,为了与c语言区分,就把c++库都放在了命名空间中,同时规定库文件不需要.H后缀,这样:
(1)以后产生的c++标准头文件(如stl)就没有.H后缀了。
(2)同时将已经存在的c++库文件(iostream.h、string.h)等也相应的用命名空间方式实现了(产生 iostream、string文件)
(3)而对于之前的已有的c库文件,都在其名字前加上了c,把他们封装成了位于std空间的文件
但是由于之前很多C++程序仍然调用的是.h的c++文件,为了兼容以前的程序,就保留了iostream.h、string.h等库文件。
那么可以知道:在编程时调用c语言库时,可以include .H文件,也可以调用使用了std的前缀为c的c++文件(不需要 using namespace std;)。在调用c++库时,98年之前的老的库文件既可以include .H 文件,也可以采用include+using namespace std方法。98之后的只有后者的方法了。
关于<string.h>、<string>、<cstring>的理解
<string.h>是c文件,主要处理的是char*类型的字符串。
<cstring>是c++文件,是把<string.h> 放入到了std空间中
<string>不是<string.h>的升级版本!其是c++实现的新的文件,定义了string类!