字符串实用工具
字符串实用工具
本节介绍了一些用于创建、复制和操作字符串的实用函数。
请注意,函数 g_printf()、g_fprintf()、g_sprintf()、g_vprintf()、g_vfprintf()、g_vsprintf() 和 g_vasprintf() 在标头文件 gprintf.h 中声明,它未包含在 glib.h 中(否则使用 glib.h 会拖入 stdio.h),因此您必须显式包含 <glib/gprintf.h> 才能使用 GLib printf() 函数。
字符串精确度缺陷
虽然您可以使用 printf() 函数来设置 UTF-8 字符串的格式,请注意 %Ns 参数的精确度解释为要打印的字节数,而不是字符数。最重要的是,printf() 函数的 GNU libc 实现具有“特性”,它检查为 %Ns 参数提供的字符串是否由当前编码中的一整个字符数组成。因此,除非您确定总处于 UTF-8 本地或知道您的文本限于 ASCII,否则避免使用 %Ns。如果您打算为一定数量的列设置字符串的格式,那么 %Ns 并不是一种正确的解决方案,因为它无法解决宽字符(请参见 g_unichar_iswide())。
另请注意,有各种平台相关的 printf() 参数。GLib 提供了这些参数的平台无关宏,应该使用这些宏。一个常见的示例是 G_GUINT64_FORMAT,应使用该宏而不是 %llu 或类似的参数来设置 64 位整数的格式。这些宏全部命名为 G_*_FORMAT;请参见 基本类型。
通用字符串操纵
g_strdup()g_strndup()g_strdupv()g_strnfill()g_stpcpy()g_strstr_len()g_strrstr()g_strrstr_len()g_str_has_prefix()g_str_has_suffix()g_strcmp0()g_str_to_ascii()g_str_tokenize_and_fold()g_str_match_string()
对于 C 中 GLib 的用户,还存在 g_set_str() 内联函数,用于设置字符串并处理新值的复制和旧值的释放。
字符串复制
打印
g_strdup_printf()g_strdup_vprintf()g_printf()g_vprintf()g_fprintf()g_vfprintf()g_sprintf()g_vsprintf()g_snprintf()g_vsnprintf()g_vasprintf()g_printf_string_upper_bound()
ASCII
g_str_is_ascii()g_ascii_isalnum()g_ascii_isalpha()g_ascii_iscntrl()g_ascii_isdigit()g_ascii_isgraph()g_ascii_islower()g_ascii_isprint()g_ascii_ispunct()g_ascii_isspace()g_ascii_isupper()g_ascii_isxdigit()
ASCII 解析
ASCII 比较
ASCII 大小写转换
ASCII 字符串操作
ASCII 数字操作
g_ascii_strtoll()g_ascii_strtoull()G_ASCII_DTOSTR_BUF_SIZEg_ascii_strtod()g_ascii_dtostr()g_ascii_formatd()g_strtod()
ASCII 数字解析
空格去除
查找和替换
拆分和连接
字符串数组
字符串数组生成器
GStrvBuilderg_strv_builder_new()g_strv_builder_ref()g_strv_builder_unref()g_strv_builder_add()g_strv_builder_addv()g_strv_builder_add_many()g_strv_builder_take()g_strv_builder_end()