string
头文件清单
接口清单
| 接口名称 | 功能简述 |
|---|---|
| stpcpy | 将源字符串复制到目标数组,返回指向目标字符串末尾的指针 |
| stpncpy | 将源字符串的前n个字符复制到目标数组,返回指向目标字符串末尾的指针 |
| strcoll_l | 根据指定区域设置的LC_COLLATE规则比较两个字符串 |
| strdup | 复制字符串到新申请的内存中 |
| strerror_l | 根据错误码和指定区域设置返回对应的错误消息字符串指针 |
| strerror_r | 根据错误码返回错误消息字符串到用户提供的缓冲区(可重入) |
| strnlen | 返回字符串的长度,不超过指定的最大长度 |
| strtok_r | 根据分隔符集合分割字符串(可重入) |
| strxfrm_l | 根据指定区域设置的LC_COLLATE规则转换字符串 |
Functions
stpcpy
函数声明
头文件清单
功能说明
- 将源字符串复制到目标字符数组中,包括末尾的空字符
- 返回指向目标字符串末尾空字符之后位置的指针
- 目标缓冲区须有足够空间容纳源字符串
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| d | char *__restrict | 目标字符数组指针 | 非空,指向的缓冲区大小须不小于源字符串长度+1 |
| s | const char *__restrict | 源字符串指针 | 非空,须指向以空字符结尾的字符串 |
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| d | char * | 复制后的目标字符数组,包含源字符串的完整内容 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| char *指针 | 指向目标字符串末尾空字符之后的位置 | 复制完成 |
stpncpy
函数声明
头文件清单
功能说明
- 将源字符串的前n个字符复制到目标数组中
- 若源字符串长度小于n,则在目标数组剩余位置填充空字符
- 返回指向目标字符串末尾的指针
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| d | char *__restrict | 目标字符数组指针 | 非空,指向的缓冲区大小须不小于n |
| s | const char *__restrict | 源字符串指针 | 非空,须指向以空字符结尾的字符串 |
| n | size_t | 最大复制字符数 | 0 ~ SIZE_MAX |
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| d | char * | 复制后的目标字符数组 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| char *指针 | 指向目标字符串末尾的指针 | 复制完成 |
strcoll_l
函数声明
头文件清单
功能说明
- 根据指定区域设置的LC_COLLATE规则比较两个字符串
- 当前实现按照strcmp方式按码点比较
- 比较结果受locale_t参数指定的区域设置影响
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| l | const char * | 待比较的左侧字符串指针 | 非空 |
| r | const char * | 待比较的右侧字符串指针 | 非空 |
| loc | locale_t | 区域设置句柄 | 有效的locale_t对象 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 小于0的整数 | 左侧字符串小于右侧字符串 | 按区域规则比较结果为小于 |
| 0 | 两个字符串相等 | 按区域规则比较结果为相等 |
| 大于0的整数 | 左侧字符串大于右侧字符串 | 按区域规则比较结果为大于 |
strdup
函数声明
头文件清单
功能说明
- 复制字符串到新申请的内存中
- 通过malloc分配足够的内存空间存放源字符串的副本
- 调用者须负责释放返回的内存
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s | const char * | 源字符串指针 | 非空,须指向以空字符结尾的字符串 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| char *非空指针 | 指向新分配内存中字符串副本的指针 | 内存分配成功 |
| NULL | 内存分配失败 | malloc分配内存失败 |
strerror_l
函数声明
头文件清单
功能说明
- 根据错误码和指定区域设置返回对应的错误消息字符串指针
- 在指定locale下将错误码转换为可读的错误描述
- 若错误码超出已知范围,返回未知错误描述
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| e | int | 错误码 | 有效的errno值 |
| loc | locale_t | 区域设置句柄 | 有效的locale_t对象 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| char *指针 | 指向错误消息字符串的指针 | 正常返回 |
strerror_r
函数声明
头文件清单
功能说明
- 根据错误码返回错误消息字符串到用户提供的缓冲区(可重入版本)
- 将错误码对应的错误描述复制到buf指向的缓冲区中
- 若缓冲区不足以容纳完整的错误消息,则截断并保证以空字符结尾
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| err | int | 错误码 | 有效的errno值 |
| buf | char * | 用户提供的缓冲区指针 | 非空 |
| buflen | size_t | 缓冲区大小 | 1 ~ SIZE_MAX |
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| buf | char * | 存放错误消息字符串的缓冲区,以空字符结尾 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 0 | 执行成功 | 错误消息完整写入缓冲区 |
| ERANGE | 缓冲区不足 | 错误消息长度大于等于buflen |
strnlen
函数声明
头文件清单
功能说明
- 返回字符串的长度,不超过指定的最大长度maxlen
- 在字符串的前maxlen个字节中查找空字符,返回空字符前的字节数
- 若前maxlen个字节中无空字符,则返回maxlen
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s | const char * | 字符串指针 | 非空 |
| maxlen | size_t | 最大扫描长度 | 0 ~ SIZE_MAX |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| size_t | 字符串长度,不超过maxlen | 正常返回 |
strtok_r
函数声明
头文件清单
功能说明
- 根据分隔符集合分割字符串(可重入版本)
- 通过第三个参数保存分割上下文,支持嵌套调用
- 每次调用返回指向下一个非分隔符Token的指针,并修改原字符串
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s | char *__restrict | 待分割的字符串指针,首次调用传入待分割字符串,后续调用传入NULL | 首次调用时非空,后续可为NULL |
| sep | const char *__restrict | 分隔符集合字符串 | 非空 |
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| p | char ** | 保存分割上下文的指针,函数通过此参数记录当前分割位置 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| char *非空指针 | 指向下一个Token的指针 | 找到新的Token |
| NULL | 无更多Token | 字符串已全部分割完毕 |
strxfrm_l
函数声明
头文件清单
功能说明
- 根据指定区域设置的LC_COLLATE规则转换字符串src
- 将转换后的字符串写入dest,转换结果可用于strcmp比较以获得与strcoll相同的排序结果
- 若n小于src的长度,则不进行转换,仅返回src的长度
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dest | char *__restrict | 目标缓冲区指针 | 若n足够则为有效指针 |
| src | const char *__restrict | 源字符串指针 | 非空 |
| n | size_t | 目标缓冲区最大字节数 | 0 ~ SIZE_MAX |
| loc | locale_t | 区域设置句柄 | 有效的locale_t对象 |
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| dest | char * | 转换后的字符串(当n大于src长度时写入) |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| size_t | 转换后字符串的完整长度 | 正常返回(若返回值大于等于n,则dest内容不完整) |
Type definitions
locale_t
使用说明 作为strcoll_l、strerror_l、strxfrm_l接口的区域设置参数类型
Macros
NULL
使用说明 空指针常量,在string.h中根据编译环境条件定义。C++环境下定义为0L或nullptr,C环境下定义为((void*)0)