字符串 更多...
宏定义 | |
#define | MSTR_IMP_SOURCES 1 |
#define | MSTR_SIZE_EXPAND_MAX 1024 |
进行扩展的阈值 | |
#define | MSTR_SIZE_LARGE_CAP_SIZE_STEP 512 |
超过X2阈值的情况下每次增大的大小 | |
函数 | |
static mstr_bool_t | mstr_compare_helper (const char *a, const char *b, usize_t len) |
比较相同长度len的字串a和b是否一致 | |
static void | mstr_reverse_unicode_helper (mstr_char_t *buff, const mstr_char_t *pe) |
翻转Unicode字符编码, 让其正确, 在UTF-8关闭的情况下, 该函数不做任何操作 | |
static void * | mstr_string_realloc (void *old_ptr, mstr_bool_t is_stack, usize_t old_size, usize_t new_size) |
重新分配内存区 | |
static usize_t | mstr_resize_tactic (usize_t old_sz, usize_t inc_len) |
改变cap的策略 | |
static mstr_result_t | mstr_strlen (usize_t *len, usize_t *count, const mstr_char_t *str, const mstr_char_t *str_end) |
计算字符串长度 | |
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_append (MString *str, mstr_codepoint_t ch) | |
向字符串尾部插入一个字符 | |
mstr_repeat_append (MString *str, mstr_codepoint_t ch, usize_t cnt) | |
向字符串尾部重复插入一个字符 | |
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_EXPORT_API (void) | |
释放由 mstr_heap_allocate 分配的内存 | |
MSTR_EXPORT_API (const char *) | |
转换为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_EXPORT_API (usize_t) | |
取得当前的空闲内存大小 | |
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 | |
字符串
#define MSTR_IMP_SOURCES 1 |
#define MSTR_SIZE_EXPAND_MAX 1024 |
进行扩展的阈值
#define MSTR_SIZE_LARGE_CAP_SIZE_STEP 512 |
超过X2阈值的情况下每次增大的大小
mstr_append | ( | MString * | str, |
mstr_codepoint_t | ch | ||
) |
向字符串尾部插入一个字符
[in,out] | str | 字符串 |
[in] | ch | 需要放入的字符(unicode point) |
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 | 转换输出的有效长度 |
取得第idx位置的字符ch
找到第idx个字符的offset
[in] | str | 字符串 |
[in] | idx | 字符索引 |
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 | 字符的字节数 |
|
static |
比较相同长度len的字串a和b是否一致
a | 字符串a |
b | 字符串b |
len | 字符串a和b的长度 |
拼接字符串
[out] | str | 目标字符串 |
[in] | other | 需要拼接的源字符串 |
mstr_concat_cstr | ( | MString * | str, |
const char * | other | ||
) |
拼接字符串(cstr)
[out] | str | 目标字符串 |
[in] | other | 需要拼接的源字符串 |
mstr_concat_cstr_slice | ( | MString * | str, |
const char * | start, | ||
const char * | end | ||
) |
拼接字符串(cstr slice)
[out] | str | 目标字符串 |
[in] | start | 需要拼接的源字符串起始 |
[in] | end | 需要拼接的源字符串结束 |
判断字符串是否含有pattern
[in] | str | 字符串 |
[in] | pattern | 需要包含的内容 |
[in] | pattern_cnt | 需要包含的内容的字符数 |
从other复制字符串到str
[out] | str | 目标字符串 |
[in] | other | 需要移动的字符串 |
mstr_create | ( | MString * | str, |
const char * | content | ||
) |
创建字符串
[out] | str | 需要创建的字符串结构 |
[in] | content | 需要丢到字符串里面的内容 |
判断字符串是否以某个字串结束
[in] | str | 字符串 |
[in] | suffix | 需要确认其结束的内容 |
[in] | suffix_cnt | suffix的char字符数 |
判断两个字符串是否相等
[in] | a | 字符串a |
[in] | b | 字符串b |
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_EXPORT_API | ( | const char * | ) |
转换为cstr
str | 字符串 |
MSTR_EXPORT_API | ( | usize_t | ) |
取得当前的空闲内存大小
判断前导字符lead后面的字符长度, 前导字符包括在内
取得自运行以来空闲内存最小的值
取得当前的空闲内存大小
MSTR_EXPORT_API | ( | void | ) |
释放由 mstr_heap_allocate 分配的内存
释放由 mstr_heap_allocate 分配的内存
释放一个字符串所占的内存
取得迭代器
翻转字符串, 不做任何其它处理
[in,out] | str | 需要翻转的字符串 |
[in,out] | str | 需要翻转的字符串 |
[out] | it | 迭代器输出 |
[in] | str | 原字符串 |
str | 字符串结构 |
mstr_insert | ( | MString * | str, |
usize_t | idx, | ||
mstr_codepoint_t | ch | ||
) |
从字符串中idx位置插入一个字符
[in,out] | str | 字符串 |
[in] | idx | 需要插入的字符位置 |
[in] | ch | 需要插入的字符 |
mstr_lead_char_offset | ( | const mstr_char_t * | buff, |
usize_t | hist_len | ||
) |
判断buff的lead字符偏移量(相反数, 比如偏移量是-2但是会返回2)
[in] | buff | 字符数组 |
[in] | hist_len | 字符数组允许往前查找的长度, 大于等于0 (不然就返回0啦), 如果大于6, 那么最大会被限制到6(1个utf-8编码的长度) |
从other移动字符串到str
[out] | str | 目标字符串 |
[in,out] | other | 需要移动的字符串 |
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 | ( | MString * | str, |
mstr_codepoint_t | ch, | ||
usize_t | cnt | ||
) |
向字符串尾部重复插入一个字符
[in,out] | str | 字符串 |
[in] | ch | 需要放入的字符(unicode point) |
[in] | cnt | 重复次数 |
保留 sz 个char数的内存区
[in,out] | str | 字符串 |
[in] | new_size | 需要保留的大小 |
改变cap的策略
[in] | old_sz | 以前的大小 |
[in] | inc_len | 至少需要增加的大小, 会在此基础上增加1 |
|
static |
翻转Unicode字符编码, 让其正确, 在UTF-8关闭的情况下, 该函数不做任何操作
[in,out] | buff | 操作数组 |
[in] | pe | 数组的末尾位置 |
判断字符串是否以某个字串开始
[in] | str | 字符串 |
[in] | prefix | 需要确认其开始的内容 |
[in] | prefix_cnt | prefix的char字符数 |
|
static |
重新分配内存区
[in] | old_ptr | 以前的内存区位置 |
[in] | is_stack | 是否为stack上分配内存 |
[in] | old_size | 原本的内存区大小 |
[in] | new_size | 需要分配的大小 |
|
static |
计算字符串长度
len | 字符长度 |
count | 字符串占用的字节数 |
str | 字符串 |
str_end | 字符串结束, 为NULL表示'\0'自己算 |