跳转至

string

string 提供字符串与内存操作的标准接口抽象层,封装 libc 常用字符串比较、查找、转换等操作,屏蔽底层实现差异。

头文件清单

#include "include/osal/string/osal_string.h"

接口清单

接口名称 功能简述
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

int osal_memncmp(const void *buf1, const void *buf2, unsigned long size)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 比较内存区域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

int osal_strcmp(const char *s1, const char *s2)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 比较两个字符串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

int osal_strncmp(const char *s1, const char *s2, unsigned long size)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 比较两个字符串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

int osal_strcasecmp(const char *s1, const char *s2)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 忽略大小写逐字节比较字符串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

int osal_strncasecmp(const char *s1, const char *s2, unsigned long size)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 忽略大小写逐字节比较字符串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

char *osal_strchr(const char *s, int n)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 在字符串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

char *osal_strnchr(const char *s, int count, int c)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 在字符串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

char *osal_strrchr(const char *s, int c)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 在字符串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

char *osal_strstr(const char *s1, const char *s2)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 在字符串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

char *osal_strnstr(const char *s1, const char *s2, int n)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 在字符串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

unsigned int osal_strlen(const char *s)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 计算字符串s的长度(不含结尾'\0')
  • 底层实现调用libc的strlen函数,参数需满足libc接口调用要求
  • 支持系统:linux liteos freertos

前置条件

  • s指向以'\0'结尾的有效字符串

入参

名称 参数类型 详细说明 约束取值范围
s const char * 待计算长度的字符串指针 非NULL,指向有效字符串

返回值

返回值 文字含义 触发场景
unsigned int 字符串的字符数(不含'\0') 正常计算

osal_strnlen

unsigned int osal_strnlen(const char *s, unsigned int size)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 计算字符串s的长度,但最多扫描size个字符
  • 底层实现调用libc的strnlen函数,参数需满足libc接口调用要求
  • 支持系统:linux liteos

前置条件

  • s指向以'\0'结尾的有效字符串或有效内存区域

入参

名称 参数类型 详细说明 约束取值范围
s const char * 待计算长度的字符串指针 非NULL,指向有效内存
size unsigned int 最大扫描字符数 0 ~ 内存区域实际长度

返回值

返回值 文字含义 触发场景
unsigned int 字符串长度(不含'\0'),但不超过size 正常计算

osal_strpbrk

char *osal_strpbrk(const char *s1, const char *s2)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 在字符串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

char *osal_strsep(char **s, const char *ct)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 从字符串s中提取以ct中字符为分隔符的标记
  • 底层实现调用libc的strsep函数,参数需满足libc接口调用要求
  • 支持系统:linux liteos

前置条件

  • s指向有效的字符串指针地址
  • ct指向以'\0'结尾的分隔符字符串

入参

名称 参数类型 详细说明 约束取值范围
s char ** 待分割的字符串指针地址 非NULL,指向有效字符串指针
ct const char * 分隔符字符集合 非NULL,指向有效字符串

返回值

返回值 文字含义 触发场景
非NULL指针 指向提取的标记起始位置 成功提取标记
NULL 无更多标记 字符串已分割完毕

osal_strspn

unsigned int osal_strspn(const char *s, const char *accept)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 计算字符串s前缀中仅包含accept字符集中字符的长度
  • 底层实现调用libc的strspn函数,参数需满足libc接口调用要求
  • 支持系统:linux liteos

前置条件

  • s和accept指向以'\0'结尾的有效字符串

入参

名称 参数类型 详细说明 约束取值范围
s const char * 待计算的字符串指针 非NULL,指向有效字符串
accept const char * 允许的字符集合 非NULL,指向有效字符串

返回值

返回值 文字含义 触发场景
unsigned int s前缀中仅由accept字符组成的字节数 正常计算

osal_strcspn

unsigned int osal_strcspn(const char *s, const char *reject)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 计算字符串s前缀中不包含reject字符集中任何字符的长度
  • 底层实现调用libc的strcspn函数,参数需满足libc接口调用要求
  • 支持系统:linux liteos

前置条件

  • s和reject指向以'\0'结尾的有效字符串

入参

名称 参数类型 详细说明 约束取值范围
s const char * 待计算的字符串指针 非NULL,指向有效字符串
reject const char * 排除的字符集合 非NULL,指向有效字符串

返回值

返回值 文字含义 触发场景
unsigned int s前缀中不包含reject字符的字节数 正常计算

osal_memscan

void *osal_memscan(void *addr, int c, int size)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 在内存区域addr中查找字节c
  • 当前实现返回NULL,查找功能未实际实现
  • 支持系统:linux liteos

前置条件

  • addr指向有效内存区域

入参

名称 参数类型 详细说明 约束取值范围
addr void * 待搜索的内存区域指针 非NULL,指向有效内存
c int 待查找的字节值 0 ~ 255
size int 内存区域大小 > 0

返回值

返回值 文字含义 触发场景
NULL 未找到(当前实现始终返回NULL) 当前实现未完成查找功能

osal_memcmp

int osal_memcmp(const void *cs, const void *ct, int count)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 比较内存区域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

void *osal_memchr(const void *s, int c, int n)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 在内存区域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

void *osal_memchr_inv(const void *s, int c, int n)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 在内存区域s的前n个字节中查找与字节c不匹配的首次出现位置
  • 当前实现返回NULL,查找功能未实际实现
  • 支持系统:linux liteos

前置条件

  • s指向有效内存区域
  • n取值不超过内存区域的实际长度

入参

名称 参数类型 详细说明 约束取值范围
s const void * 待搜索的内存区域指针 非NULL,指向有效内存
c int 待排除的字节值 0 ~ 255
n int 搜索的字节数 0 ~ 内存区域实际长度

返回值

返回值 文字含义 触发场景
NULL 未找到(当前实现始终返回NULL) 当前实现未完成查找功能

osal_strtoull

unsigned long long osal_strtoull(const char *cp, char **endp, unsigned int base)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 将字符串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

unsigned long osal_strtoul(const char *cp, char **endp, unsigned int base)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 将字符串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

long osal_strtol(const char *cp, char **endp, unsigned int base)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 将字符串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

long long osal_strtoll(const char *cp, char **endp, unsigned int base)

头文件清单

#include "include/osal/string/osal_string.h"

功能说明

  • 将字符串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) 当前实现未完成转换功能

Macros

OSAL_BASE_DEC

#define OSAL_BASE_DEC 10

OSAL_BASE_HEX

#define OSAL_BASE_HEX 16