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

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *