C++ 标准头文件与C头文件区别与联系

本文详细解析了C++标准库头文件的区别,包括<string.h>, <string>, <cstring>的区别,并阐述了C++标准化过程中解决的问题,如引入名称空间概念、统一头文件后缀名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    摘自其他作者的博客,外加自己的整理。
1、<>和""的区别:用前者的话,在编译时系统会在用户自定义的库文件里去找,如果找不到再到系统库文件里找。后者采用相反顺序。
2、
一般一个带“.h” 扩展名的库文件,比如iostream.h,是延续C语言的,为了兼容C。在新标准的库中都有一个不带".h"扩展名
    的相对应的 标准库头文件,所谓标准库头文件就是从理论上讲,所有平台的编译器都会支持的头文件。区别:后者以c开头,
    如<csting> ;有很多改进之处,比如后者的东西都放进了“std”名字空间中,所以使用时都需要用std命名空间。
    
c的头文件xxx.h,在c++里被统一归纳到了namespace std命名空间内, 实现手段如下:
    string.h --> cstring :
     
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命名空间。 
     现在理清 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 规定用户应使用新版头文件,对旧版本头文件不在进行强制规范,但大多数编译器厂商依然提供旧版本头文件,
     以求向下兼容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值