GTK+ 2.0 教学-字串处理

GLib 定义了一个叫做 GString 的新型别,该型别相似于标准 C 中的string,但可以自动增长。字串资料以null结尾。该型别可以防止程式中的缓冲区溢出错误。这是一个非常重要的特性,因此我推荐使用 GString。GString 有一简单定义:

struct GString
{
  gchar *str; /* 指向当前以‘\0’结尾的字串。 */
  gint len; /* 当前长度 */
};

如你所预想的,有许多对一个 GString 型别字串的操作。

GString *g_string_new( gchar *init );

这个函式构造一个 GString 型别字串,它把 init指向的字串值复制到 GString 型别字串中,传回一个指向它的指标。建一个初始为空的 GString 型别字串则传递一个 NULL 作为参数。

void g_string_free( GString *string,
                    gint     free_segment );

该函式释放给定的 GString 型别字串的记忆体。如果参数 free_segment 为 TRUE,也释放其字元资料。

 GString *g_string_assign( GString     *lval,
                          const gchar *rval );

该函式将 rval 中的字元复制到 lval 中,覆盖 lval 中以前的内容。注意为装下复制的字串,lval 会变长,这是和标准的 strcpy() 数不一样的。

以下函式的功能是相当明显的(带有_c的版本接受一个字元而不是一个字串):

 GString *g_string_truncate( GString *string,
                            gint     len );

GString *g_string_append( GString *string,
                          gchar   *val );

GString *g_string_append_c( GString *string,
                            gchar    c );

GString *g_string_prepend( GString *string,
                           gchar   *val );

GString *g_string_prepend_c( GString *string,
                             gchar    c );

void g_string_sprintf( GString *string,
                       gchar   *fmt,
                       ...);

void g_string_sprintfa ( GString *string,
                         gchar   *fmt,
                         ... );

Comments are closed.