概述
简介
字符串是一种非常常见的数据类型,为了便于操作字符串,GLib首先将字符串封装成类似C++ CString对象的一个结构体,又对字符串的一系列操作进行了封装,使用起来非常便捷,又避免了很多内存泄露的风险。
对非封装的简单字符串的处理见通用工具集
章的字符串处理函数
一节。
数据结构
struct GString {
gchar *str; //数据,以null结尾,可以作为普通字符串使用
gsize len; //字符串长度,不包括null字节
gsize allocated_len; //在重新分配之前,本节点所能存储的最大内存长度。已分配内存长度。
};
函数列表
GString * g_string_new ()
GString * g_string_new_len ()
GString * g_string_sized_new ()
GString * g_string_assign ()
void g_string_vprintf ()
void g_string_append_vprintf ()
void g_string_printf ()
void g_string_append_printf ()
GString * g_string_append ()
GString * g_string_append_c ()
GString * g_string_append_unichar ()
GString * g_string_append_len ()
GString * g_string_append_uri_escaped ()
GString * g_string_prepend ()
GString * g_string_prepend_c ()
GString * g_string_prepend_unichar ()
GString * g_string_prepend_len ()
GString * g_string_insert ()
GString * g_string_insert_c ()
GString * g_string_insert_unichar ()
GString * g_string_insert_len ()
GString * g_string_overwrite ()
GString * g_string_overwrite_len ()
GString * g_string_erase ()
GString * g_string_truncate ()
GString * g_string_set_size ()
gchar * g_string_free ()
GBytes * g_string_free_to_bytes ()
GString * g_string_up ()
GString * g_string_down ()
guint g_string_hash ()
gboolean g_string_equal ()
函数功能分类
创建
GString * g_string_new ()
GString * g_string_new_len ()
GString * g_string_sized_new ()
释放
gchar * g_string_free ()
GBytes * g_string_free_to_bytes ()
插入
GString * g_string_append ()
GString * g_string_append_c ()
GString * g_string_append_unichar ()
GString * g_string_append_len ()
GString * g_string_append_uri_escaped ()
GString * g_string_prepend ()
GString * g_string_prepend_c ()
GString * g_string_prepend_unichar ()
GString * g_string_prepend_len ()
GString * g_string_insert ()
GString * g_string_insert_c ()
GString * g_string_insert_unichar ()
GString * g_string_insert_len ()
访问
GString->str;
格式化
void g_string_vprintf ()
void g_string_append_vprintf ()
void g_string_printf ()
void g_string_append_printf ()
覆盖
GString * g_string_overwrite ()
GString * g_string_overwrite_len ()
拷贝
GString * g_string_assign ()
擦除
GString * g_string_erase ()
截短
GString * g_string_truncate ()
设置长度
GString * g_string_set_size ()
大小写转换
GString * g_string_up ()
GString * g_string_down ()
哈希函数
guint g_string_hash ()
gboolean g_string_equal ()
函数功能说明及综合演示
GString字符串是一种内存随文本长度增加而自动增长的数据结构。其数据结构如下:
struct GString {
gchar *str;
gsize len;
gsize allocated_len;
};
- str:实际存放的字符串,以’ ’结尾
- len:字符串的实际长度,不包括结尾的’ ’
- allocated_len:重新申请内存前分配的内存空间,如果存的字符比这个长度大,将会自动重新申请内存
由于GString包含一个len长度,因此str可以存任何字符,甚至是二进制数据。
创建和释放
创建相关的函数及简介:
//g_string_new将给定的init字符串拷贝到GString内,如果init为空,则创建出的GString是一个包含空字符串的变量。
GString * g_string_new (const gchar *init);
//将指定长度的数据拷贝到GString,由于指定了长度,init可以不以'