GTK中的字符串操作GString

GString
除了使用gchar *进行字符串处理以外, G l i b还定义了一种新的数据类型: G S t r i n g。它类似于标准C的字符串类型,但是G S t r i n g能够自动增长。它的字符串数据是以N U L L结尾的。这些特性可以防止程序中的缓冲溢出。这是一种非常重要的特性。下面是G S t r i n g的定义:
struct GString
{
gchar *str; /* Points to the st’rsi ncgurrent /0-terminated value. */
gint len; /* Current length */
} ;
用下面的函数创建新的G S t r i n g变量:
GString *g_string_new( gchar *init );
这个函数创建一个G S t r i n g,将字符串值i n i t复制到G S t r i n g中,返回一个指向它的指针。如果i n i t参数是N U L L,创建一个空G S t r i n g。
void g_string_free( GString *string, gint free_segment );
这个函数释放s t r i n g所占据的内存。f r e e _ s e g m e n t参数是一个布尔类型变量。如果f r e e _ s e g m e n t参数是T R U E,它还释放其中的字符数据。
GString *g_string_assign( GString *lval,const gchar *rval );
这个函数将字符从r v a l复制到l v a l,销毁l v a l的原有内容。注意,如有必要, l v a l会被加长以容纳字符串的内容。这一点和标准的字符串复制函数s t r c p y ( )相同。下面的函数的意义都是显而易见的。其中以_ c结尾的函数接受一个字符,而不是字符串。
截取s t r i n g字符串,生成一个长度为l e n的子串:
GString *g_string_truncate( GString *string,gint len );
将字符串v a l追加在s t r i n g后面,返回一个新字符串:
GString *g_string_append( GString *string,gchar *val );
将字符c追加到s t r i n g后面,返回一个新的字符串:
GString *g_string_append_c( GString *string,gchar c );
将字符串v a l插入到s t r i n g前面,生成一个新字符串:
GString *g_string_prepend( GString *string,gchar *val );
将字符c插入到s t r i n g前面,生成一个新字符串:
GString *g_string_prepend_c( GString *string,gchar c );
将一个格式化的字符串写到s t r i n g中,类似于标准的s p r i n t f函数:
void g_string_sprintf( GString *string,gchar *fmt,. . . ) ;
将一个格式化字符串追加到s t r i n g后面,与上一个函数略有不同:
void g_string_sprintfa ( GString *string,gchar *fmt,... );

你可能感兴趣的:(c,String,struct,gtk)