C/C++头文件版本演变
2016-04-01 13:28
375 查看
C/C++头文件版本演变
参考:
http://blog.sina.com.cn/s/blog_a2d423a001010qzn.html http://blog.csdn.net/luoweifu/article/details/20242307
在将C库和旧的C++库放入名字空间std 中的过程中,对
1)旧的C++头文件。将C++头文件名中的.h 去掉,所以<iostream.h>变成了<iostream>,<complex.h>变成了<complex>,等等。
2)旧的C头文件。对于C 头文件,采用同样的方法,但在每个名字前还要添加一个c,所以C 的<string.h>变成了<cstring>,<stdio.h>变成了<cstdio>,等等。
最后一点是,旧的C++头文件是官方所反对使用的(即,明确列出不再支持),但旧的C 头文件则没有(以保持对C 的兼容性)。实际上,编译器制造商不会停止对客户现有软件提供支持,所以可以预计,旧的C++头文件在未来几年内还是会被支持。
综上,标准C 头文件如<stdio.h>继续被支持,头文件的内容不在std 中。具有C库功能的新C++头文件具有如<cstdio>这样的名字,它们提供的内容和相应的旧C头文件相同,只是内容在std 中。旧的C++头文件名如<iostream.h>将会继续被支持,尽管它们不在官方标准中,这些头文件的内容不在名字空间std 中。新的C++头文件如<iostream>包含的基本功能和对应的旧头文件相同,但头文件的内容在名字空间std 中。
两个过程:
C库-->C++的std库
旧的C++库-->C++的std库
特别地,关于字符串头文件:
<string.h>是旧的C头文件,对应的是基于char*的字符串处理函数,包含strcpy、strcat之类;
<cstring>是对应于旧C头文件的std版本;
<string>是包装了std的C++头文件,对应的是新的string类。它定义了一个string的字符串类,里面包含了string类的各种操作,如s.size(), s.erase(), s.insert()等。但<string>又包含了老的C版本的字符串操作如strcpy、strcat等,这就相当于,在<string>的文件中除了定义自己的string类之外,还加了一个#include<string.h>一句包含了C版本的字符串操作。
因此,关于字符串直接使用<string>即可。
参考:
http://blog.sina.com.cn/s/blog_a2d423a001010qzn.html http://blog.csdn.net/luoweifu/article/details/20242307
在将C库和旧的C++库放入名字空间std 中的过程中,对
1)旧的C++头文件。将C++头文件名中的.h 去掉,所以<iostream.h>变成了<iostream>,<complex.h>变成了<complex>,等等。
2)旧的C头文件。对于C 头文件,采用同样的方法,但在每个名字前还要添加一个c,所以C 的<string.h>变成了<cstring>,<stdio.h>变成了<cstdio>,等等。
最后一点是,旧的C++头文件是官方所反对使用的(即,明确列出不再支持),但旧的C 头文件则没有(以保持对C 的兼容性)。实际上,编译器制造商不会停止对客户现有软件提供支持,所以可以预计,旧的C++头文件在未来几年内还是会被支持。
综上,标准C 头文件如<stdio.h>继续被支持,头文件的内容不在std 中。具有C库功能的新C++头文件具有如<cstdio>这样的名字,它们提供的内容和相应的旧C头文件相同,只是内容在std 中。旧的C++头文件名如<iostream.h>将会继续被支持,尽管它们不在官方标准中,这些头文件的内容不在名字空间std 中。新的C++头文件如<iostream>包含的基本功能和对应的旧头文件相同,但头文件的内容在名字空间std 中。
两个过程:
C库-->C++的std库
旧的C++库-->C++的std库
特别地,关于字符串头文件:
<string.h>是旧的C头文件,对应的是基于char*的字符串处理函数,包含strcpy、strcat之类;
<cstring>是对应于旧C头文件的std版本;
<string>是包装了std的C++头文件,对应的是新的string类。它定义了一个string的字符串类,里面包含了string类的各种操作,如s.size(), s.erase(), s.insert()等。但<string>又包含了老的C版本的字符串操作如strcpy、strcat等,这就相当于,在<string>的文件中除了定义自己的string类之外,还加了一个#include<string.h>一句包含了C版本的字符串操作。
因此,关于字符串直接使用<string>即可。
相关文章推荐
- C++STL容器(lower_bound,upper_bound)
- c++作业2
- C++实验2-模拟银行
- C/C++—— C++中一个空对象为什么还要占用一个字节空间
- C++:移动构造和移动赋值
- C++之类型转换
- 移动构造-C++11
- C++中结构体和类型的sizeof()
- C++ 大数模板
- Visual C++(MFC)实现C/S
- 1152: 【C语言训练】计算:t=1-1/(2*2)-1/(3*3)-...-1/(m*m)
- 2016蓝桥杯C/C++A组填数字
- VC++中,如何定义callback函数和它的触发事件?
- 利用享元模式模拟网站对象建立 C++
- C++ 使用开源库里.h文件和.lib文件的步骤
- 使用C语言解析URL
- C/C++中的移位运算
- c语言字符数组与字符串的使用详解
- 第1周 《C语言及程序设计》资料3——C语言中转义字符
- C++ 访问属性