MtFmt 1.0.0
MtFmt is a format library on embed. system and wrote by pure C.
载入中...
搜索中...
未找到
结构体 | 宏定义 | 类型定义 | 枚举 | 函数 | 变量
mm_string.h 文件参考

字符串 更多...

#include "mm_cfg.h"
#include "mm_result.h"
#include "mm_type.h"

浏览源代码.

结构体

struct  tagMStringMatchResult
 字符串匹配信息 更多...
 
struct  tagMString
 字符串 更多...
 
struct  tagMStringIter
 字符串迭代器 更多...
 

宏定义

#define MSTR_STACK_REGION_SIZE   16
 栈上分配的空间大小
 
#define mstr_init(pstr)
 初始化一个空的字符串
 
#define mstr_create_empty(s)   mstr_create(s, "")
 创建空的总付出
 
#define mstr_iter_move_next(it)
 移动到下一个位置
 
#define mstr_iter_is_end(it)   ((it).it == (it).it_end)
 判断迭代器是否已到末尾
 

类型定义

typedef enum tagMStringReplaceOption MStringReplaceOption
 字符串替换选项
 
typedef struct tagMStringMatchResult MStringMatchResult
 字符串匹配信息
 
typedef struct tagMString MString
 字符串
 
typedef struct tagMStringIter MStringIter
 字符串迭代器
 

枚举

enum  tagMStringReplaceOption { MStringReplaceOption_StartWith , MStringReplaceOption_EndWith , MStringReplaceOption_All }
 字符串替换选项 更多...
 

函数

 mstr_create (MString *str, const char *content)
 创建字符串
 
 mstr_move_from (MString *str, MString *other)
 从other移动字符串到str
 
 mstr_copy_from (MString *str, const MString *other)
 从other复制字符串到str
 
 mstr_reserve (MString *str, usize_t new_size)
 保留 sz 个char数的内存区
 
 mstr_concat (MString *str, const MString *other)
 拼接字符串
 
 mstr_concat_cstr (MString *str, const char *other)
 拼接字符串(cstr)
 
 mstr_concat_cstr_slice (MString *str, const char *start, const char *end)
 拼接字符串(cstr slice)
 
 mstr_append (MString *str, mstr_codepoint_t ch)
 向字符串尾部插入一个字符
 
 mstr_repeat_append (MString *str, mstr_codepoint_t ch, usize_t cnt)
 向字符串尾部重复插入一个字符
 
 MSTR_EXPORT_API (void) mstr_clear(MString *str)
 清空字符串
 
 MSTR_EXPORT_API (const char *) mstr_c_str(MString *str)
 转换为cstr
 
 mstr_equal (const MString *a, const MString *b)
 判断两个字符串是否相等
 
 mstr_equal_cstr (const MString *a, const mstr_char_t *b, usize_t b_cnt)
 判断两个字符串是否相等(cstr)
 
 mstr_start_with (const MString *str, const char *prefix, usize_t prefix_cnt)
 判断字符串是否以某个字串开始
 
 mstr_end_with (const MString *str, const char *suffix, usize_t suffix_cnt)
 判断字符串是否以某个字串结束
 
 mstr_contains (const MString *str, const char *pattern, usize_t pattern_cnt)
 判断字符串是否含有pattern
 
 mstr_char_at (const MString *str, usize_t idx)
 取得第idx位置的字符ch
 
 mstr_remove (MString *str, mstr_codepoint_t *removed_ch, usize_t idx)
 从字符串中移除idx位置的字符
 
 mstr_insert (MString *str, usize_t idx, mstr_codepoint_t ch)
 从字符串中idx位置插入一个字符
 
 mstr_find (const MString *str, MStringMatchResult *f_res, usize_t begin_pos, const char *pattern, usize_t pattern_cnt)
 查找子串第一次出现的位置
 
 mstr_retain (MString *str, MStringReplaceOption opt, const char *pattern, usize_t pattern_cnt)
 从字符串中移除所有匹配substr的字符
 
 mstr_replace (MString *str, MStringReplaceOption opt, const char *pattern, usize_t pattern_cnt, const char *replace_to, usize_t replace_to_cnt)
 进行字符串替换(单个目标)
 
 MSTR_EXPORT_API (usize_t) mstr_char_length(char lead)
 判断前导字符lead后面的字符长度, 前导字符包括在内
 
 mstr_lead_char_offset (const mstr_char_t *buff, usize_t hist_len)
 判断buff的lead字符偏移量(相反数, 比如偏移量是-2但是会返回2)
 
 mstr_as_utf8 (mstr_codepoint_t code, mstr_char_t *result, usize_t *result_len)
 转换为UTF-8, 如果未启用UTF-8, 该函数返回未实现错误
 
 mstr_codepoint_of (mstr_codepoint_t *code, const mstr_char_t *ch, usize_t byte_count)
 取得lead字符ch[0]所跟着的内容的unicode代码点值 如果未启用UTF-8, 该函数返回未实现错误
 
 mstr_char_offset_at (const MString *str, usize_t idx)
 找到第idx个字符的offset
 

变量

const MStringstr
 

详细描述

字符串

作者
向阳 (hinat.nosp@m.a.ho.nosp@m.shino.nosp@m.@fox.nosp@m.mail..nosp@m.com)
版本
1.0
日期
2023-04-22

宏定义说明

◆ mstr_create_empty

#define mstr_create_empty (   s)    mstr_create(s, "")

创建空的总付出

◆ mstr_init

#define mstr_init (   pstr)
值:
do { \
(pstr)->count = 0; \
(pstr)->length = 0; \
(pstr)->buff = (pstr)->stack_region; \
(pstr)->cap_size = MSTR_STACK_REGION_SIZE; \
} while (0)
#define MSTR_STACK_REGION_SIZE
栈上分配的空间大小
Definition mm_string.h:22

初始化一个空的字符串

参数
[in,out]pstr字符串

◆ mstr_iter_is_end

#define mstr_iter_is_end (   it)    ((it).it == (it).it_end)

判断迭代器是否已到末尾

◆ mstr_iter_move_next

#define mstr_iter_move_next (   it)
值:
do { \
usize_t step = mstr_char_length(*((it).it)); \
(it).it += step; \
(it).rem_leng -= 1; \
} while (0)
size_t usize_t
尺寸(无符号)
Definition mm_type.h:32

移动到下一个位置

◆ MSTR_STACK_REGION_SIZE

#define MSTR_STACK_REGION_SIZE   16

栈上分配的空间大小

类型定义说明

◆ MString

typedef struct tagMString MString

字符串

◆ MStringIter

typedef struct tagMStringIter MStringIter

字符串迭代器

◆ MStringMatchResult

字符串匹配信息

◆ MStringReplaceOption

字符串替换选项

枚举类型说明

◆ tagMStringReplaceOption

字符串替换选项

枚举值
MStringReplaceOption_StartWith 

仅替换开始位置

MStringReplaceOption_EndWith 

仅替换末尾位置

MStringReplaceOption_All 

全部替换

函数说明

◆ mstr_append()

mstr_append ( MString str,
mstr_codepoint_t  ch 
)

向字符串尾部插入一个字符

参数
[in,out]str字符串
[in]ch需要放入的字符(unicode point)
返回
mstr_result_t: 结果

◆ mstr_as_utf8()

mstr_as_utf8 ( mstr_codepoint_t  code,
mstr_char_t result,
usize_t result_len 
)

转换为UTF-8, 如果未启用UTF-8, 该函数返回未实现错误

参数
code字符代码点
result转换输出, 至少要有6个bytes
result_len转换输出的有效长度

◆ mstr_char_at()

mstr_char_at ( const MString str,
usize_t  idx 
)

取得第idx位置的字符ch

注意
边界检查失败会造成assert false, 函数失败会返回0 而不是返回mstr_result

◆ mstr_char_offset_at()

mstr_char_offset_at ( const MString str,
usize_t  idx 
)

找到第idx个字符的offset

参数
[in]str字符串
[in]idx字符索引
注意
该函数会进行边界检查
返回
usize_t: 相对于 buff 的偏移量, buff + 返回值 是该字符的 lead

◆ mstr_codepoint_of()

mstr_codepoint_of ( mstr_codepoint_t code,
const mstr_char_t ch,
usize_t  byte_count 
)

取得lead字符ch[0]所跟着的内容的unicode代码点值 如果未启用UTF-8, 该函数返回未实现错误

参数
[out]code解码结果
[in]ch字符串
[in]byte_count字符的字节数

◆ mstr_concat()

mstr_concat ( MString str,
const MString other 
)

拼接字符串

参数
[out]str目标字符串
[in]other需要拼接的源字符串
返回
mstr_result_t: 拼接结果

◆ mstr_concat_cstr()

mstr_concat_cstr ( MString str,
const char *  other 
)

拼接字符串(cstr)

参数
[out]str目标字符串
[in]other需要拼接的源字符串
返回
mstr_result_t: 拼接结果

◆ mstr_concat_cstr_slice()

mstr_concat_cstr_slice ( MString str,
const char *  start,
const char *  end 
)

拼接字符串(cstr slice)

参数
[out]str目标字符串
[in]start需要拼接的源字符串起始
[in]end需要拼接的源字符串结束
返回
mstr_result_t: 拼接结果

◆ mstr_contains()

mstr_contains ( const MString str,
const char *  pattern,
usize_t  pattern_cnt 
)

判断字符串是否含有pattern

参数
[in]str字符串
[in]pattern需要包含的内容
[in]pattern_cnt需要包含的内容的字符数
注意
在发生意外的错误(如编码问题, 内存分配失败)时, 该函数也会返回False

◆ mstr_copy_from()

mstr_copy_from ( MString str,
const MString other 
)

从other复制字符串到str

参数
[out]str目标字符串
[in]other需要移动的字符串
注意
该函数会清空释放原有的字符串并创建一个新的, other需要再次释放, 且会释放掉原有的str

◆ mstr_create()

mstr_create ( MString str,
const char *  content 
)

创建字符串

参数
[out]str需要创建的字符串结构
[in]content需要丢到字符串里面的内容
返回
mstr_result_t: 创建结果

◆ mstr_end_with()

mstr_end_with ( const MString str,
const char *  suffix,
usize_t  suffix_cnt 
)

判断字符串是否以某个字串结束

参数
[in]str字符串
[in]suffix需要确认其结束的内容
[in]suffix_cntsuffix的char字符数

◆ mstr_equal()

mstr_equal ( const MString a,
const MString b 
)

判断两个字符串是否相等

参数
[in]a字符串a
[in]b字符串b
返回
mstr_bool_t: 字符串相等情况

◆ mstr_equal_cstr()

mstr_equal_cstr ( const MString a,
const mstr_char_t b,
usize_t  b_cnt 
)

判断两个字符串是否相等(cstr)

参数
[in]a字符串a
[in]b字符串b
[in]b_cnt字符串b的字符数
返回
mstr_bool_t: 字符串相等情况

◆ MSTR_EXPORT_API() [1/3]

MSTR_EXPORT_API ( const char *  )

转换为cstr

参数
str字符串
返回
const char*: C字符串指针

◆ MSTR_EXPORT_API() [2/3]

MSTR_EXPORT_API ( usize_t  )

判断前导字符lead后面的字符长度, 前导字符包括在内

注解
在UTF-8功能启用的情况下, 其判断UTF-8编码的字符长度, 错误返回0, 否则, 该函数永远返回1

判断前导字符lead后面的字符长度, 前导字符包括在内

取得当前的空闲内存大小

判断前导字符lead后面的字符长度, 前导字符包括在内

取得自运行以来空闲内存最小的值

取得当前的空闲内存大小

◆ MSTR_EXPORT_API() [3/3]

MSTR_EXPORT_API ( void  )

清空字符串

释放由 mstr_heap_allocate 分配的内存

释放一个字符串所占的内存

取得迭代器

翻转字符串, 不做任何其它处理

翻转字符串

参数
[in,out]str需要清空的字符串
[in,out]str需要翻转的字符串
[in,out]str需要翻转的字符串
注意
通常情况下不需要使用此函数, 此函数不会保证反转后的编码正确。它设计出来是为了给明确只有ASCII字符的字符串做翻转的, 在UTF-8编码下, 该函数可降低很多操作
参数
[out]it迭代器输出
[in]str原字符串
str字符串结构

◆ mstr_find()

mstr_find ( const MString str,
MStringMatchResult f_res,
usize_t  begin_pos,
const char *  pattern,
usize_t  pattern_cnt 
)

查找子串第一次出现的位置

参数
[in]str字符串a
[out]f_res查找结果
[in]begin_pos开始查找的位置
[in]pattern需要查找的子串
[in]pattern_cntpattern的char个数

◆ mstr_insert()

mstr_insert ( MString str,
usize_t  idx,
mstr_codepoint_t  ch 
)

从字符串中idx位置插入一个字符

参数
[in,out]str字符串
[in]idx需要插入的字符位置
[in]ch需要插入的字符

◆ mstr_lead_char_offset()

mstr_lead_char_offset ( const mstr_char_t buff,
usize_t  hist_len 
)

判断buff的lead字符偏移量(相反数, 比如偏移量是-2但是会返回2)

注解
在UTF-8功能启用的情况下, 其判断UTF-8编码的字符长度, 错误返回0, 否则, 该函数永远返回1
参数
[in]buff字符数组
[in]hist_len字符数组允许往前查找的长度, 大于等于0 (不然就返回0啦), 如果大于6, 那么最大会被限制到6(1个utf-8编码的长度)

◆ mstr_move_from()

mstr_move_from ( MString str,
MString other 
)

从other移动字符串到str

参数
[out]str目标字符串
[in,out]other需要移动的字符串
注意
该函数转移other的所有权, other不需要再次释放, 且会释放掉str

◆ mstr_remove()

mstr_remove ( MString str,
mstr_codepoint_t removed_ch,
usize_t  idx 
)

从字符串中移除idx位置的字符

参数
[in,out]str字符串
[out]remoed_ch被移除的字符, 可以为NULL
[in]idx需要移除的字符位置

◆ mstr_repeat_append()

mstr_repeat_append ( MString str,
mstr_codepoint_t  ch,
usize_t  cnt 
)

向字符串尾部重复插入一个字符

参数
[in,out]str字符串
[in]ch需要放入的字符(unicode point)
[in]cnt重复次数
返回
mstr_result_t: 结果

◆ mstr_replace()

mstr_replace ( MString str,
MStringReplaceOption  opt,
const char *  pattern,
usize_t  pattern_cnt,
const char *  replace_to,
usize_t  replace_to_cnt 
)

进行字符串替换(单个目标)

参数
[in,out]str字符串
[in]opt替换模式
[in]pattern需要替换的子串模式
[in]pattern_cnt模式串的字符计数
[in]replace_to需要替换为的结果
[in]replace_to_cnt_cnt结果的字符计数

◆ mstr_reserve()

mstr_reserve ( MString str,
usize_t  new_size 
)

保留 sz 个char数的内存区

参数
[in,out]str字符串
[in]new_size需要保留的大小

◆ mstr_retain()

mstr_retain ( MString str,
MStringReplaceOption  opt,
const char *  pattern,
usize_t  pattern_cnt 
)

从字符串中移除所有匹配substr的字符

参数
[in,out]str字符串
[in]opt替换模式
[in]pattern需要移除的pattern
[in]pattern_cnt需要移除的pattern的字符计数

◆ mstr_start_with()

mstr_start_with ( const MString str,
const char *  prefix,
usize_t  prefix_cnt 
)

判断字符串是否以某个字串开始

参数
[in]str字符串
[in]prefix需要确认其开始的内容
[in]prefix_cntprefix的char字符数

变量说明

◆ str

const MString* str