2014年02月02日 星期日 16:07
GString是一种动态字符串数据结构,提供了丰富灵活方便的API,无需手工分配内存,无需担心缓冲区溢出。编程示例如下:
#include <stdio.h>
#include <glib.h>
int main(int argc,char **argv) {
    GString *s=g_string_new("Hello World.");
    printf("From GString: %s\n",s->str);
    printf("Length: %d\n",s->len);
    printf("Capaticy: %d\n",s->allocated_len);
    
    GString *t=g_string_new("Hello Laomeng.");
    if(g_string_equal(s,t)) {
        printf("%s  == %s\n",s->str,t->str);
    } else {
        printf("%s != %s\n",s->str,t->str);
    }
    
    g_string_ascii_up(s);
    printf("From GString: %s\n",s->str);
    g_string_ascii_down(s);
    printf("From GString: %s\n",s->str);
    g_string_append(s,"Hello Universe.");
    printf("From GString: %s\n",s->str);
    printf("Length: %d\n",s->len);
    printf("Capaticy: %d\n",s->allocated_len);
    g_string_truncate(s,0);
    printf("From GString: %s\n",s->str);
    printf("Length: %d\n",s->len);
    printf("Capaticy: %d\n",s->allocated_len);
    g_string_printf(s,"%d + %d = %d",
            100,200,100+200);
    printf("From GString: %s\n",s->str);
    printf("Length: %d\n",s->len);
    printf("Capaticy: %d\n",s->allocated_len);
    g_string_append_printf(s,"\t %d * %d = %d",
            100,200,100*200);
    printf("From GString: %s\n",s->str);
    printf("Length: %d\n",s->len);
    printf("Capaticy: %d\n",s->allocated_len);
    g_string_free(s,TRUE);
    g_string_free(t,TRUE);
    
    return 0;
}
参考资料:
https://developer.gnome.org/glib/2.39/glib-Strings.html
Zeuux © 2025
京ICP备05028076号