摘自其他作者的博客,外加自己的整理。
1、<>和""的区别:
用前者的话,在编译时系统会在用户自定义的库文件里去找,如果找不到再到系统库文件里找。后者采用
相反顺序。
2、 一般一个带“.h” 扩展名的库文件,比如iostream.h,是延续C语言的,为了兼容C。在新标准的库中都有一个 不带".h"扩展名
的相对应的 标准库头文件,所谓标准库头文件就是从理论上讲,所有平台的编译器都会支持的头文件。 区别:后者以c开头,
如<csting> ; 还 有很 多改进之处,比如 后者的东西都放进了“std”名字空间中,所以使用时都需要用std命名空间。
c的头文件xxx.h,在c++里被统一归纳到了namespace std命名空间内, 实现手段如下:
string.h --> cstring :2、 一般一个带“.h” 扩展名的库文件,比如iostream.h,是延续C语言的,为了兼容C。在新标准的库中都有一个 不带".h"扩展名
的相对应的 标准库头文件,所谓标准库头文件就是从理论上讲,所有平台的编译器都会支持的头文件。 区别:后者以c开头,
如<csting> ; 还 有很 多改进之处,比如 后者的东西都放进了“std”名字空间中,所以使用时都需要用std命名空间。
c的头文件xxx.h,在c++里被统一归纳到了namespace std命名空间内, 实现手段如下:
namespace std
{
#include <string.h>
}
①<string> 是C++标准库定义string类(严格说是basic_string模板)的头文件;
②<cstring> 则是C++语言兼容于C的,声明那些C语言字符串处理函数(如strcpy,strcmp,strcat等)的头文件,它移植了C中的
<string. h>,成为后者的C++版本。
③ C开头且后面没有.h的头文件,是C++保持原来C标准库的头文件。 <cstring> 跟C语言的 <string.h> 的一个不同是cstring中所有东西
都定义在“std”这个命名空间中, 运行<cstring>需要添加std命名空间。
③ C开头且后面没有.h的头文件,是C++保持原来C标准库的头文件。 <cstring> 跟C语言的 <string.h> 的一个不同是cstring中所有东西
都定义在“std”这个命名空间中, 运行<cstring>需要添加std命名空间。
现在理清 string.h string cstring 这三个头文件的区别:
<string.h>是旧的C头文件,对应的是基于char* 的字符串处理函数。
<string>是包装了std的C++ 头文件对应的是新的string 类。
<cstring>是对应于C头文件的std版本, 运行<cstring>需要添加std名字空间。
Cstring 是MFC中的类。
3、 C++标准化过程中,其中一个环节,解决了以下问题:
①C++增加了名称空间概念,借以将原来声明在全局空间下的标识符声明在了namespace std下。
② 统一C++各种后缀名,如.h、.hpp、.hxx等。标准化之前的头文件就是带后缀名的文件,标准化后的头文件就是不带后缀名的
文件。C++ 98 规定用户应使用新版头文件,对旧版本头文件不在进行强制规范,但大多数编译器厂商依然提供旧版本头文件,
以求向下兼容。
<string.h>是旧的C头文件,对应的是基于char* 的字符串处理函数。
<string>是包装了std的C++ 头文件对应的是新的string 类。
<cstring>是对应于C头文件的std版本, 运行<cstring>需要添加std名字空间。
Cstring 是MFC中的类。
3、 C++标准化过程中,其中一个环节,解决了以下问题:
①C++增加了名称空间概念,借以将原来声明在全局空间下的标识符声明在了namespace std下。
② 统一C++各种后缀名,如.h、.hpp、.hxx等。标准化之前的头文件就是带后缀名的文件,标准化后的头文件就是不带后缀名的
文件。C++ 98 规定用户应使用新版头文件,对旧版本头文件不在进行强制规范,但大多数编译器厂商依然提供旧版本头文件,
以求向下兼容。