• FFMPEG学习【libavutil】:String Manipulation


    一、宏

    #define  AV_ESCAPE_FLAG_WHITESPACE   (1 << 0)

    考虑空间特别,甚至在字符串的中间逃避他们。

    这相当于将空格字符添加到特殊字符列表中,除了它保证使用完全相同的空格字符列表作为libavutil的其余部分。

    #define  AV_ESCAPE_FLAG_STRICT   (1 << 1)

    仅转义指定的特殊字符。

    没有这个标志,也可以逃避av_get_token()可能被视为特殊的任何字符,例如单引号。

    接受0x10FFFF以上的代码点

    接受非字符 - 0xFFFE和0xFFFF

    接受UTF-16代理代码

    排除不被XML接受的控制代码

    二、枚举

    三、函数

    int  av_strstart (const char *str, const char *pfx, const char **ptr)

    如果pfx是str的前缀,返回非零。

    如果是,则将* ptr设置为str前面的第一个字符的地址。

    参数:str:输入字符

       pfx:前缀测试

       ptr:如果前缀在str中匹配,则更新

    返回:如果前缀匹配则为非零,否则为零

    int  av_stristart (const char *str, const char *pfx, const char **ptr)

    如果pfx是独立于大小写的str的前缀,返回非零。

    如果是,则将* ptr设置为str前面的第一个字符的地址。

    参数:str:输入字符

       pfx:前缀测试

       ptr:如果前缀在str中匹配,则更新

    返回:如果前缀匹配则为非零,否则为零

    char *  av_stristr (const char *haystack, const char *needle)

    在字符串针的字符串干草堆中找到第一个不区分大小写的事件。

    在干草堆开始时,零长度的针头针被认为是匹配的。

    此函数是标准strstr()的不区分大小写的版本。

    参数:haystack:要搜索的字符串

       needle:待搜索字符串

    返回:指向haystack中找到的匹配的指针,如果没有匹配,则指向空指针

    char *  av_strnstr (const char *haystack, const char *needle, size_t hay_length)

    在字符串haystack中找到字符串针的第一次出现,其中不超过hay_length字符被搜索。

    在haystack开始时,零长度的针头针被认为是匹配的。

    此函数是标准strstr()的长度限制版本。

    参数:haystack:要搜索的字符串

       needle:待搜索字符串

       hay_length:要搜索的字符串的长度

    返回:指向haystack中找到的匹配的指针,如果没有匹配,则指向空指针

    size_t  av_strlcpy (char *dst, const char *src, size_t size)

    将字符串src复制到dst,但不能超过size-1个字节,并将null终止dst。

    此功能与BSD strlcpy()相同。

    参数:dst:目的缓冲区

       src:源字符串

       size:目的缓冲区的大小

    返回:源字符串长度

    警告:由于返回值是src的长度,src绝对必须是一个正确的0终止的字符串,否则这将读取超出缓冲区的结尾并可能崩溃。

    size_t  av_strlcat (char *dst, const char *src, size_t size)

    将字符串src附加到字符串dst,但总长度不得大于1字节,并且为null终止dst。

    此功能类似于BSD strlcat(),但在大小<= strlen(dst)时不同。

    参数:dst:目的缓冲区

       src:源字符串

        size:目的缓冲区的大小

    返回:src和dst的总长度

    警告:由于返回值使用src和dst的长度,这些绝对必须是一个正确的0终止的字符串,否则这将读取超出缓冲区的结尾,并可能会崩溃。

    size_t  av_strlcatf (char *dst, size_t size, const char *fmt,...) av_printf_format(3

    根据格式将输出附加到字符串。

    不要写出目标缓冲区,并且始终将缓冲区中的终止0。

    参数:dst:目标缓冲区(附加输出的字符串)

       size:目标缓冲区的总大小

       fmt:printf兼容的格式字符串,指定如何使用以下参数

    返回:如果有足够的空间可用,将生成的字符串的长度

    size_t static size_t  av_strnlen (const char *s, size_t len)

    从头开始获取连续非零字符的数量。

    参数:len:要检查字符串的最大字符数,即该函数返回的最大值

    char *  av_asprintf (const char *fmt,...) av_printf_format(1

    按照指定格式将参数打印到足够大的自动分配缓冲区中。

    它类似于GNU asprintf()。

    参数:fmt:printf兼容的格式字符串,指定如何使用以下参数。

    返回:分配的字符串

    注意:你必须用av_free()自己释放字符串。

    char char *  av_d2str (double d)

    将数字转换为av_malloced字符串。

    char *  av_get_token (const char **buf, const char *term)

    取消对给定的字符串进行过滤,直到非转义的终止字符为止,并返回与未转义字符串对应的令牌。

    正常的\和'转义是支持的。 领先和尾随的空白被删除,除非它们以“\”或“封闭在”之间被转义。

    参数:buf:要解析的缓冲区,buf将被更新为指向终止字符

       term:终止字符的0个终止的列表

    返回:在分配失败的情况下,用户必须av_freed的malloced unescaped字符串为NULL

    char *  av_strtok (char *s, const char *delim, char **saveptr)

    将字符串拆分成若干令牌,可以通过连续调用av_strtok()来访问。

    令牌被定义为不属于在delim中指定的集合的字符序列。

    在第一次调用av_strtok()时,s应指向要解析的字符串,并忽略saveptr的值。 在后续调用中,s应该为NULL,并且saveptr应该是从前一次调用开始不变的。

    此函数与POSIX.1中定义的strtok_r()类似。

    参数:s:要解析的字符串可能为NULL

       delim:0终止的令牌分隔符列表,必须为非NULL

       saveptr:用户提供的指针指向av_strtok()所需的存储信息,以继续扫描相同的字符串。 saveptr被更新为指向第一个分隔符之后的下一个字符,如果字符串被终止,则为NULL

    返回:找到的令牌,或者当没有找到令牌时为NULL

    static av_const int  av_isdigit (int c)

    与ASCII isdigit的区域无关转换。

    static av_const int  av_isgraph (int c)

    ASCII地图区域设置独立转换。

    static av_const int  av_isspace (int c)

    与ASCII isspace的区域无关转换。

    static av_const int  av_toupper (int c)

    ASCII字符转换为大写字母区域设置。

    static av_const int  av_tolower (int c)

    区域设置独立的ASCII字符转换为小写。

    static av_const int  av_isxdigit (int c)

    ASCII区域设置独立转换isxdigit。

    int  av_strcasecmp (const char *a, const char *b)

    不区分大小写区分大小写。

    注意:这意味着只有ASCII范围字符不区分大小写

    int  av_strncasecmp (const char *a, const char *b, size_t n)

    不区分大小写区分大小写。

    注意:这意味着只有ASCII范围字符不区分大小写

    char *  av_strireplace (const char *str, const char *from, const char *to)

    与区域设置无关的字符串替换。

    注意:这意味着只有ASCII范围字符被替换

    const char *  av_basename (const char *path)

    线程安全基本名称。

    参数:path:路径,在DOS上,\和/都被认为是分隔符。

    返回:指向basename子字符串的指针。

    const char *  av_dirname (char *path)

    线程安全目录。

    路径,在DOS上,\和/都被认为是分隔符。

    返回:带有分隔符的路径被字符串终止符或“。”替换。

    注意:该功能可能会改变输入字符串。

    int  av_match_name (const char *name, const char *names)

    以逗号分隔的名称列表匹配名称的实例。

    从名称列表的开始到结束检查列表条目,第一个匹配结束进一步处理。 如果以' - '为前缀的条目匹配,则返回0。 “ALL”列表项被认为与所有名称相匹配。

    参数:name:要找的名字。

       names:名字列表

    返回:1表示匹配,偶表示不匹配

    char *  av_append_path_component (const char *path, const char *component)

    将路径组件附加到现有路径。

    路径分隔符'/'位于需要的位置之间。 必须使用av_free()来释放所得到的字符串。

    参数:path:基本路径

       component:要附加的组件

    返回:新路径或NULL错误。

    av_warn_unused_result int  av_escape (char **dst, const char *src, const char *special_chars, enum AVEscapeMode modeint flags)

    在src中转义字符串,并将转义的字符串放在* dst中分配的字符串中,该字符串必须与av_free()一起释放。

    参数:dst:指向分配字符串的指针

       src:字符串要转义,必须是非NULL

       special_chars:包含需要转义的特殊字符的字符串可以为NULL

       mode:逃生模式使用,请参阅AV_ESCAPE_MODE_ *宏。 模式的任何未知值将被视为等同于AV_ESCAPE_MODE_BACKSLASH,但是此行为可能会更改,恕不另行通知。

       flags:控制如何转义的标志,请参阅AV_ESCAPE_FLAG_宏

    返回:分配的字符串的长度,或者错误的情况下的负错误代码

    av_warn_unused_result int  av_utf8_decode (int32_t *codep, const uint8_t **bufp, const uint8_t *buf_end, unsigned int flags)

    从* buf中的缓冲区中读取和解码单个UTF-8代码点(字符),并更新* buf以指向要解码的下一个字节。

    在无效字节序列的情况下,指针将被更新为无效序列后的下一个字节,并且该函数将返回错误代码。

    根据指定的标志,解码的代码点不属于有效范围时,功能也将失败。

    注意:对于与速度相关的代码,可能会优先考虑使用GET_UTF8()。

    参数:codep:指针用于返回解析的代码,以防成功。 即使在范围检查失败的情况下,也会设置* codep中的值。

       bufp:指向地址的第一个字节的序列进行解码,由该函数更新为指向下一个字节后的解码序列

       buf_end:指向缓冲区的结尾,指向缓冲区中最后一个的下一个字节。 这用于避免缓冲区覆盖(在缓冲区末尾有未完成的UTF-8序列的情况下)。

        flags:一个AV_UTF8_FLAG_ *标志的集合

    返回:> = 0,如果序列成功读取,则在无效序列的情况下为负值

    int  av_match_list (const char *name, const char *list, char separator)

    检查名称是否在列表中。

    返回:0,如果没有找到,或者在列表中找到的基于1的索引。

  • 相关阅读:
    tableView.contentInset
    Xcode 显示行数
    翻译技巧2
    程序员的自我修养学习笔记——第一章
    C++11 正则表达式——基础知识介绍
    C++11 正则表达式——实例1
    C++11 多线程
    程序员的自我修养——说明
    C++11 生产者消费者
    C++11 正则表达式——实例3
  • 原文地址:https://www.cnblogs.com/lidabo/p/15624613.html
Copyright © 2020-2023  润新知