与string相关的头文件解析(C/C++)

与string相关的头文件解析(C/C++)


1.下面是大家比较熟悉的头文件
#include <string> c++标准库提供的string类
#include <string.h> c标准库提供的字符串函数
#include <cstring> c++对标准c字符串处理函数的c++增强
string中定义的是一个string类,不用说什么了,但是string.h 和 cstring有什么呢?
/*
 * This is the C++ version of the Standard C Library header @c string.h,
 * and its contents are (mostly) the same as that header, but are all
 * contained in the namespace @c std (except for names which are defined
 * as macros in C).
 */
就是说,这两个文件内容(几乎)相同(除了其中一些宏的名字)。
为什么说几乎相同呢?是因为还是有一点不同,在C++11中,这个函数声明:
void *memchr(const void*, int, size_t) /* in c */
被以下的两个声明替换:
void *memchr (void *, int, size_t) /* in c++ */
const void *memchr (const void *, int, size_t) /* in c++ */
实际上面3个函数的实现是一样的。

2.在有些系统(Unix/Linux etc.)中还有这样的一个头文件strings.h
strings.h来源于Unix的衍生的BSD系统,后来被POSIX标准化,但是其中的很多函数都被标识为LAGACY(遗留的),大多可以被其他函数替换:
int    bcmp(const void *, const void *, size_t); /* LEGACY, see memcmp */
void   bcopy(const void *, void *, size_t); /* LEGACY, see memcpy, memmove */
void   bzero(void *, size_t); /* LEGACY, see memset */
int    ffs(int);
char  *index(const char *, int); /* LEGACY, see strchr */
char  *rindex(const char *, int); /* LEGACY, see strrchr */
int    strcasecmp(const char *, const char *);
int    strncasecmp(const char *, const char *, size_t);
该头文件不是经常用到(在Windows环境都没有这个文件)。

3.说到头文件,还有一个问题要说
<>引用的头文件和""引用的头文件的区别:其实就是搜索路径的区别。
<>引用的头文件的搜索路径是系统库路径;
""引用的头文件的搜索路径首先是当前路径,如果当前路径没有该文件,则去系统路径下搜索。


引用:
string.h和strings.h的区别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值