Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11316
  • 博文数量: 4
  • 博客积分: 220
  • 博客等级: 二等列兵
  • 技术积分: 55
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-15 17:27
文章分类
文章存档

2010年(1)

2008年(3)

我的朋友
最近访客

分类: LINUX

2008-11-02 22:53:16

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,... );

阅读(1151) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~