结构体

GLib字符串

说明 [src]

struct GString {
  gchar* str;
  gsize len;
  gsize allocated_len;
}

GString 是一个处理 C 字符串内存管理的对象。

GString 强调的是文本,通常是 UTF-8。至关重要的是,GString 的“str”成员保证拥有一个尾随空字符,因此,在上面调用 strchr()strdup() 等函数始终是安全的。

但是,GString 也可以包含任意二进制数据,因为它有一个“len”成员,其中包含数据可能嵌入的任何空字符。因此,从概念上来说,GString 就像一个 GByteArray,另外还为文本提供了许多便捷的方法,并保证有一个空终止符。

结构成员
str

指向字符数据。随着添加文本,它可能会移动。str 字段以 null 结尾,因此可以用作普通 C 字符串。

len

包含字符串的长度,不包括终止的空字节。

allocated_len

在需要重新分配字符串之前,可以存储在字符串中的字节数。可能大于 len

构造函数

g_string_new

创建一个新的 GString,用给定的字符串初始化。

g_string_new_len

init 缓冲区的 len 字节创建一个新的 GString。由于提供了长度,因此 init 不需要以空结尾,并且可以包含嵌入的空字节。

g_string_new_take

创建一个新的 GString,用给定的字符串初始化。

since: 2.78

g_string_sized_new

创建一个有足够空间存储 dfl_size 字节的新 GString。如果你要向该字符串添加大量文本并且不想让它被重新分配的过于频繁,那么这很有用。

实例方法

g_string_append

将字符串追加到 GString 的末尾,必要时将其展开。

g_string_append_c

将字节追加到 GString 的末尾,必要时将其展开。

g_string_append_len

vallen 字节追加到 string

g_string_append_printf

将格式化字符串追加到 GString 的末尾。此函数类似于 g_string_printf(),除了文本被追加到 GString

g_string_append_unichar

将 Unicode 字符转换为 UTF-8,并将其追加到字符串。

g_string_append_uri_escaped

unescaped 追加到 string,使用 URI 样式转义序列转义 URI 中保留的任何字符。

since: 2.16

g_string_append_vprintf

将格式化字符串追加到 GString 的末尾。此函数类似于 g_string_append_printf(),除了格式字符串的参数作为 va_list 传递。

since: 2.14

g_string_ascii_down

将所有大写 ASCII 字母转换为小写 ASCII 字母。

g_string_ascii_up

将所有小写 ASCII 字母转换为大写 ASCII 字母。

g_string_assign

将字符串中的字节复制到 GString,销毁所有先前内容。它类似于标准的 strcpy() 函数,只是您不必担心有足够的空间来复制字符串。

g_string_down

GString 转换为小写。

已弃用: 2.2 

g_string_equal

比较两个字符串的相等性,如果它们相等则返回 TRUE。用于 GHashTable

g_string_erase

GString 中删除 len 个字节,从位置 pos 开始。 GString 的其余部分向下移以填补空白。

g_string_free

释放为 GString 分配的内存。如果 free_segmentTRUE,它还将释放字符数据。如果它为 FALSE,则调用者获得缓冲区的拥有权,并且必须在使用 g_free() 后释放它。

g_string_free_and_steal

释放为 GString 分配的内存。

since: 2.76

g_string_free_to_bytes

string 内容的所有权转移到新分配的 GBytesGString 结构本身被释放,因此调用此函数后使用 string 是无效的。

since: 2.34

g_string_hash

str 创建哈希代码;用于 GHashTable

g_string_insert

将字符串的副本插入 GString,必要时对其进行扩展。

g_string_insert_c

将字节插入 GString,必要时对其进行扩展。

g_string_insert_len

len 字节的 val 插入 pos 处的 string

g_string_insert_unichar

将 Unicode 字符转换为 UTF-8,并将其插入指定位置处的字符串中。

g_string_overwrite

覆盖字符串的一部分,必要时将其加长。

since: 2.14

g_string_overwrite_len

覆盖字符串的一部分,必要时将其加长。此函数将适用于嵌入的 NUL

since: 2.14

g_string_prepend

GString 的开始添加一个字符串,必要时对其进行扩展。

g_string_prepend_c

GString 的开始添加一个字节,必要时对其进行扩展。

g_string_prepend_len

len 字节的 val 前置到 string

g_string_prepend_unichar

将 Unicode 字符转换为 UTF-8,并将其前置到字符串。

g_string_printf

将格式化字符串写入 GString。这类似于标准的 sprintf() 函数,除了 GString 缓冲区自动扩展以包含结果。 GString 的先前内容被销毁。

g_string_replace

用字符串 replace 替换 GString 中的字符串 find 最多 limit 次。如果 GStringfind 的实例数量少于 limit,则所有实例都将被替换。如果 limit0,则 find 的所有实例都将被替换。

自:2.68

g_string_set_size

设置 GString 的长度。如果长度小于当前长度,则字符串将被截断。如果长度大于当前长度,则新添加区域的内容未定义。(但是,像往常一样,string->str[string->len] 将为 null 字节)。

g_string_truncate

截断 GString 的末尾,保留前 len 个字节。

g_string_up

GString 转换为大写。

已弃用: 2.2 

g_string_vprintf

将格式化字符串写入 GString。此函数类似于 g_string_printf(),只不过格式字符串的参数作为 va_list 传递。

since: 2.14