string
string 提供字符串与内存操作的标准接口抽象层,封装 libc 常用字符串比较、查找、转换等操作,屏蔽底层实现差异。
头文件清单
接口清单
| 接口名称 | 功能简述 |
|---|---|
| osal_memncmp | 比较两段内存区域的前size字节 |
| osal_strcmp | 比较两个字符串 |
| osal_strncmp | 比较两个字符串的前size字节 |
| osal_strcasecmp | 忽略大小写比较两个字符串 |
| osal_strncasecmp | 忽略大小写比较两个字符串的前size字节 |
| osal_strchr | 在字符串中查找指定字符的首次出现位置 |
| osal_strnchr | 在限长字符串中查找指定字符的首次出现位置 |
| osal_strrchr | 在字符串中查找指定字符的最后一次出现位置 |
| osal_strstr | 在字符串中查找子串的首次出现位置 |
| osal_strnstr | 在限长字符串中查找子串的首次出现位置 |
| osal_strlen | 计算字符串长度 |
| osal_strnlen | 计算限长字符串的长度 |
| osal_strpbrk | 在字符串中搜索字符集合中任意字符的首次出现 |
| osal_strsep | 从字符串中提取分隔标记 |
| osal_strspn | 计算字符串前缀中仅包含指定字符集的长度 |
| osal_strcspn | 计算字符串前缀中不包含指定字符集的长度 |
| osal_memscan | 在内存区域中查找指定字节 |
| osal_memcmp | 比较两段内存区域 |
| osal_memchr | 在内存区域中查找指定字节的首次出现 |
| osal_memchr_inv | 在内存区域中查找与指定字节不匹配的首次出现 |
| osal_strtoull | 将字符串转换为unsigned long long整数 |
| osal_strtoul | 将字符串转换为unsigned long整数 |
| osal_strtol | 将字符串转换为long整数 |
| osal_strtoll | 将字符串转换为long long整数 |
Functions
osal_memncmp
头文件清单
功能说明
- 比较内存区域buf1和buf2的前size字节内容
- 底层实现调用libc的memcmp函数,参数需满足libc接口调用要求
- 支持系统:linux liteos
前置条件
- buf1和buf2指向有效内存区域,且长度不小于size
- size取值不超过待比较内存区域的实际长度
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| buf1 | const void * | 待比较的内存区域指针 | 非NULL,指向有效内存 |
| buf2 | const void * | 待比较的内存区域指针 | 非NULL,指向有效内存 |
| size | unsigned long | 待比较的字节数 | 0 ~ 内存区域实际长度 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| < 0 | buf1小于buf2 | buf1前size字节字典序小于buf2 |
| 0 | buf1等于buf2 | buf1前size字节与buf2完全相同 |
| > 0 | buf1大于buf2 | buf1前size字节字典序大于buf2 |
osal_strcmp
头文件清单
功能说明
- 比较两个字符串s1和s2的内容
- 底层实现调用libc的strcmp函数,参数需满足libc接口调用要求
- 支持系统:linux liteos freertos
前置条件
- s1和s2指向以'\0'结尾的有效字符串
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s1 | const char * | 待比较的字符串指针 | 非NULL,指向有效字符串 |
| s2 | const char * | 待比较的字符串指针 | 非NULL,指向有效字符串 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| < 0 | s1小于s2 | s1字典序小于s2 |
| 0 | s1等于s2 | s1与s2内容完全相同 |
| > 0 | s1大于s2 | s1字典序大于s2 |
osal_strncmp
头文件清单
功能说明
- 比较两个字符串s1和s2的前size字节内容
- 底层实现调用libc的strncmp函数,参数需满足libc接口调用要求
- 支持系统:linux liteos
前置条件
- s1和s2指向以'\0'结尾的有效字符串
- size取值不超过待比较字符串的实际长度
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s1 | const char * | 待比较的字符串指针 | 非NULL,指向有效字符串 |
| s2 | const char * | 待比较的字符串指针 | 非NULL,指向有效字符串 |
| size | unsigned long | 待比较的字节数 | 0 ~ 字符串实际长度 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| < 0 | s1前size字节小于s2 | s1前size字节字典序小于s2 |
| 0 | s1前size字节等于s2 | s1前size字节与s2完全相同 |
| > 0 | s1前size字节大于s2 | s1前size字节字典序大于s2 |
osal_strcasecmp
头文件清单
功能说明
- 忽略大小写逐字节比较字符串s1和s2
- 底层实现调用libc的strcasecmp函数,参数需满足libc接口调用要求
- 支持系统:linux liteos freertos
前置条件
- s1和s2指向以'\0'结尾的有效字符串
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s1 | const char * | 待比较的字符串指针 | 非NULL,指向有效字符串 |
| s2 | const char * | 待比较的字符串指针 | 非NULL,指向有效字符串 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| < 0 | s1小于s2(忽略大小写) | s1字典序小于s2 |
| 0 | s1等于s2(忽略大小写) | s1与s2内容相同(忽略大小写) |
| > 0 | s1大于s2(忽略大小写) | s1字典序大于s2 |
osal_strncasecmp
头文件清单
功能说明
- 忽略大小写逐字节比较字符串s1和s2的前size字节
- 底层实现调用libc的strncasecmp函数,参数需满足libc接口调用要求
- 支持系统:linux liteos
前置条件
- s1和s2指向以'\0'结尾的有效字符串
- size取值不超过待比较字符串的实际长度
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s1 | const char * | 待比较的字符串指针 | 非NULL,指向有效字符串 |
| s2 | const char * | 待比较的字符串指针 | 非NULL,指向有效字符串 |
| size | unsigned long | 待比较的字节数 | 0 ~ 字符串实际长度 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| < 0 | s1前size字节小于s2(忽略大小写) | s1前size字节字典序小于s2 |
| 0 | s1前size字节等于s2(忽略大小写) | s1前size字节与s2相同(忽略大小写) |
| > 0 | s1前size字节大于s2(忽略大小写) | s1前size字节字典序大于s2 |
osal_strchr
头文件清单
功能说明
- 在字符串s中查找字符n的首次出现位置
- 底层实现调用libc的strchr函数,参数需满足libc接口调用要求
- 支持系统:linux liteos
前置条件
- s指向以'\0'结尾的有效字符串
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s | const char * | 待搜索的字符串指针 | 非NULL,指向有效字符串 |
| n | int | 待查找的字符 | 0 ~ 255 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 非NULL指针 | 指向字符n首次出现的位置 | 在字符串s中找到字符n |
| NULL | 未找到字符 | 字符串s中不存在字符n |
osal_strnchr
头文件清单
功能说明
- 在字符串s的前count个字符范围内查找字符c的首次出现位置
- 当s为NULL或count小于等于0时直接返回NULL
- 实现中逐字符遍历,遇到'\0'终止,支持系统:linux liteos
前置条件
- s指向以'\0'结尾的有效字符串
- count大于0
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s | const char * | 待搜索的字符串指针 | 非NULL,指向有效字符串 |
| count | int | 搜索的字符数量 | > 0 |
| c | int | 待查找的字符 | 0 ~ 255 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 非NULL指针 | 指向字符c首次出现的位置 | 在前count个字符中找到字符c |
| NULL | 未找到字符 | s为NULL、count<=0或前count个字符中不存在字符c |
osal_strrchr
头文件清单
功能说明
- 在字符串s中查找字符c的最后一次出现位置
- 底层实现调用libc的strrchr函数,参数需满足libc接口调用要求
- 支持系统:linux liteos
前置条件
- s指向以'\0'结尾的有效字符串
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s | const char * | 待搜索的字符串指针 | 非NULL,指向有效字符串 |
| c | int | 待查找的字符 | 0 ~ 255 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 非NULL指针 | 指向字符c最后一次出现的位置 | 在字符串s中找到字符c |
| NULL | 未找到字符 | 字符串s中不存在字符c |
osal_strstr
头文件清单
功能说明
- 在字符串s1中查找子串s2的首次出现位置
- 底层实现调用libc的strstr函数,参数需满足libc接口调用要求
- 支持系统:linux liteos
前置条件
- s1和s2指向以'\0'结尾的有效字符串
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s1 | const char * | 待搜索的字符串指针 | 非NULL,指向有效字符串 |
| s2 | const char * | 待查找的子串指针 | 非NULL,指向有效字符串 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 非NULL指针 | 指向子串s2首次出现的位置 | 在字符串s1中找到子串s2 |
| NULL | 未找到子串 | 字符串s1中不存在子串s2 |
osal_strnstr
头文件清单
功能说明
- 在字符串s1的前n个字符范围内查找子串s2的首次出现位置
- 当s1或s2为NULL时直接返回NULL;s2为空串时返回s1
- 实现中逐字符遍历,限制搜索范围不超过n个字符,支持系统:linux liteos
前置条件
- s1和s2指向以'\0'结尾的有效字符串
- n大于等于s2的长度
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s1 | const char * | 待搜索的字符串指针 | 非NULL,指向有效字符串 |
| s2 | const char * | 待查找的子串指针 | 非NULL,指向有效字符串 |
| n | int | 搜索的字符数量限制 | >= 0 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 非NULL指针 | 指向子串s2首次出现的位置 | 在前n个字符范围内找到子串s2 |
| NULL | 未找到子串 | s1或s2为NULL、n小于s2长度或范围内未找到子串 |
osal_strlen
头文件清单
功能说明
- 计算字符串s的长度(不含结尾'\0')
- 底层实现调用libc的strlen函数,参数需满足libc接口调用要求
- 支持系统:linux liteos freertos
前置条件
- s指向以'\0'结尾的有效字符串
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s | const char * | 待计算长度的字符串指针 | 非NULL,指向有效字符串 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| unsigned int | 字符串的字符数(不含'\0') | 正常计算 |
osal_strnlen
头文件清单
功能说明
- 计算字符串s的长度,但最多扫描size个字符
- 底层实现调用libc的strnlen函数,参数需满足libc接口调用要求
- 支持系统:linux liteos
前置条件
- s指向以'\0'结尾的有效字符串或有效内存区域
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s | const char * | 待计算长度的字符串指针 | 非NULL,指向有效内存 |
| size | unsigned int | 最大扫描字符数 | 0 ~ 内存区域实际长度 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| unsigned int | 字符串长度(不含'\0'),但不超过size | 正常计算 |
osal_strpbrk
头文件清单
功能说明
- 在字符串s1中查找字符集合s2中任意字符的首次出现位置
- 底层实现调用libc的strpbrk函数,参数需满足libc接口调用要求
- 支持系统:linux liteos
前置条件
- s1和s2指向以'\0'结尾的有效字符串
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s1 | const char * | 待搜索的字符串指针 | 非NULL,指向有效字符串 |
| s2 | const char * | 待匹配的字符集合指针 | 非NULL,指向有效字符串 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 非NULL指针 | 指向s1中首次匹配s2中任意字符的位置 | 找到匹配字符 |
| NULL | 未找到匹配字符 | s1中不存在s2中的任何字符 |
osal_strsep
头文件清单
功能说明
- 从字符串s中提取以ct中字符为分隔符的标记
- 底层实现调用libc的strsep函数,参数需满足libc接口调用要求
- 支持系统:linux liteos
前置条件
- s指向有效的字符串指针地址
- ct指向以'\0'结尾的分隔符字符串
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s | char ** | 待分割的字符串指针地址 | 非NULL,指向有效字符串指针 |
| ct | const char * | 分隔符字符集合 | 非NULL,指向有效字符串 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 非NULL指针 | 指向提取的标记起始位置 | 成功提取标记 |
| NULL | 无更多标记 | 字符串已分割完毕 |
osal_strspn
头文件清单
功能说明
- 计算字符串s前缀中仅包含accept字符集中字符的长度
- 底层实现调用libc的strspn函数,参数需满足libc接口调用要求
- 支持系统:linux liteos
前置条件
- s和accept指向以'\0'结尾的有效字符串
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s | const char * | 待计算的字符串指针 | 非NULL,指向有效字符串 |
| accept | const char * | 允许的字符集合 | 非NULL,指向有效字符串 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| unsigned int | s前缀中仅由accept字符组成的字节数 | 正常计算 |
osal_strcspn
头文件清单
功能说明
- 计算字符串s前缀中不包含reject字符集中任何字符的长度
- 底层实现调用libc的strcspn函数,参数需满足libc接口调用要求
- 支持系统:linux liteos
前置条件
- s和reject指向以'\0'结尾的有效字符串
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s | const char * | 待计算的字符串指针 | 非NULL,指向有效字符串 |
| reject | const char * | 排除的字符集合 | 非NULL,指向有效字符串 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| unsigned int | s前缀中不包含reject字符的字节数 | 正常计算 |
osal_memscan
头文件清单
功能说明
- 在内存区域addr中查找字节c
- 当前实现返回NULL,查找功能未实际实现
- 支持系统:linux liteos
前置条件
- addr指向有效内存区域
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| addr | void * | 待搜索的内存区域指针 | 非NULL,指向有效内存 |
| c | int | 待查找的字节值 | 0 ~ 255 |
| size | int | 内存区域大小 | > 0 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| NULL | 未找到(当前实现始终返回NULL) | 当前实现未完成查找功能 |
osal_memcmp
头文件清单
功能说明
- 比较内存区域cs和ct的前count字节内容
- 底层实现调用libc的memcmp函数,参数需满足libc接口调用要求
- 支持系统:linux liteos freertos
前置条件
- cs和ct指向有效内存区域,且长度不小于count
- count取值不超过待比较内存区域的实际长度
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| cs | const void * | 待比较的内存区域指针 | 非NULL,指向有效内存 |
| ct | const void * | 待比较的内存区域指针 | 非NULL,指向有效内存 |
| count | int | 待比较的字节数 | 0 ~ 内存区域实际长度 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| < 0 | cs小于ct | cs前count字节字典序小于ct |
| 0 | cs等于ct | cs前count字节与ct完全相同 |
| > 0 | cs大于ct | cs前count字节字典序大于ct |
osal_memchr
头文件清单
功能说明
- 在内存区域s的前n个字节中查找字节c的首次出现位置
- 底层实现调用libc的memchr函数,参数需满足libc接口调用要求
- 支持系统:linux liteos
前置条件
- s指向有效内存区域
- n取值不超过内存区域的实际长度
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s | const void * | 待搜索的内存区域指针 | 非NULL,指向有效内存 |
| c | int | 待查找的字节值 | 0 ~ 255 |
| n | int | 搜索的字节数 | 0 ~ 内存区域实际长度 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 非NULL指针 | 指向字节c首次出现的位置 | 在前n个字节中找到字节c |
| NULL | 未找到字节 | 前n个字节中不存在字节c |
osal_memchr_inv
头文件清单
功能说明
- 在内存区域s的前n个字节中查找与字节c不匹配的首次出现位置
- 当前实现返回NULL,查找功能未实际实现
- 支持系统:linux liteos
前置条件
- s指向有效内存区域
- n取值不超过内存区域的实际长度
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| s | const void * | 待搜索的内存区域指针 | 非NULL,指向有效内存 |
| c | int | 待排除的字节值 | 0 ~ 255 |
| n | int | 搜索的字节数 | 0 ~ 内存区域实际长度 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| NULL | 未找到(当前实现始终返回NULL) | 当前实现未完成查找功能 |
osal_strtoull
头文件清单
功能说明
- 将字符串cp按照指定进制base转换为unsigned long long整数值
- 字符串可包含前导空白字符、可选的正负号;base为0或16时支持"0x"前缀
- 当前实现返回0,转换功能未实际实现
- 支持系统:linux
前置条件
- cp指向以'\0'结尾的有效字符串
- base取值范围为2~36或特殊值0
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| cp | const char * | 待转换的字符串指针 | 非NULL,指向有效字符串 |
| endp | char ** | 存储转换结束位置的指针地址 | NULL或不关心时可为NULL |
| base | unsigned int | 转换的进制基数 | 0 / OSAL_BASE_DEC / OSAL_BASE_HEX / 2 ~ 36 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 0 | 转换结果(当前实现始终返回0) | 当前实现未完成转换功能 |
osal_strtoul
头文件清单
功能说明
- 将字符串cp按照指定进制base转换为unsigned long整数值
- 字符串可包含前导空白字符、可选的正负号;base为0或16时支持"0x"前缀
- 底层实现调用libc的strtoul函数,参数需满足libc接口调用要求
- 支持系统:linux liteos
前置条件
- cp指向以'\0'结尾的有效字符串
- base取值范围为2~36或特殊值0
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| cp | const char * | 待转换的字符串指针 | 非NULL,指向有效字符串 |
| endp | char ** | 存储转换结束位置的指针地址 | NULL或不关心时可为NULL |
| base | unsigned int | 转换的进制基数 | 0 / OSAL_BASE_DEC / OSAL_BASE_HEX / 2 ~ 36 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| unsigned long | 转换后的无符号长整数值 | 成功转换 |
| ULONG_MAX | 溢出 | 转换结果超出unsigned long范围 |
osal_strtol
头文件清单
功能说明
- 将字符串cp按照指定进制base转换为long整数值
- 字符串可包含前导空白字符、可选的正负号;base为0或16时支持"0x"前缀
- 底层实现调用内核simple_strtol函数,参数需满足libc接口调用要求
- 支持系统:linux liteos
前置条件
- cp指向以'\0'结尾的有效字符串
- base取值范围为2~36或特殊值0
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| cp | const char * | 待转换的字符串指针 | 非NULL,指向有效字符串 |
| endp | char ** | 存储转换结束位置的指针地址 | NULL或不关心时可为NULL |
| base | unsigned int | 转换的进制基数 | 0 / OSAL_BASE_DEC / OSAL_BASE_HEX / 2 ~ 36 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| long | 转换后的有符号长整数值 | 成功转换 |
| LONG_MAX | 正向溢出 | 转换结果超出long正向范围 |
| LONG_MIN | 负向溢出 | 转换结果超出long负向范围 |
osal_strtoll
头文件清单
功能说明
- 将字符串cp按照指定进制base转换为long long整数值
- 字符串可包含前导空白字符、可选的正负号;base为0或16时支持"0x"前缀
- 当前实现返回0,转换功能未实际实现
- 支持系统:linux
前置条件
- cp指向以'\0'结尾的有效字符串
- base取值范围为2~36或特殊值0
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| cp | const char * | 待转换的字符串指针 | 非NULL,指向有效字符串 |
| endp | char ** | 存储转换结束位置的指针地址 | NULL或不关心时可为NULL |
| base | unsigned int | 转换的进制基数 | 0 / OSAL_BASE_DEC / OSAL_BASE_HEX / 2 ~ 36 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 0 | 转换结果(当前实现始终返回0) | 当前实现未完成转换功能 |