GTK+中文社区(gtk.awaysoft.com)

 找回密码
 马上加入

QQ登录

只需一步,快速开始

查看: 4148|回复: 3

GString基本操作二

[复制链接]

该用户从未签到

发表于 2010-8-30 17:30:17 | 显示全部楼层 |阅读模式
该演示主要操作一个字符串,分解成单个字符,同时获取字符串长度,部分字符串等
作者:AlimysoYang
  1. #include <gtk/gtk.h>
  2. GtkWidget *wnd;
  3. GtkWidget *vbox,*hbox;
  4. GtkWidget *entry,*btntest,*btnquit;
  5. void ui_init()
  6. {
  7.     wnd = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  8.     gtk_window_set_title(GTK_WINDOW(wnd),"Test GString");
  9.     gtk_window_set_position(GTK_WINDOW(wnd),GTK_WIN_POS_CENTER);
  10.    
  11.     vbox = gtk_vbox_new(TRUE,2);
  12.     hbox = gtk_hbox_new(TRUE,2);
  13.     entry = gtk_entry_new();
  14.     btntest = gtk_button_new_with_label("测试");
  15.     btnquit = gtk_button_new_with_label("退出");
  16.     gtk_box_pack_start_defaults(GTK_BOX(hbox),btntest);
  17.     gtk_box_pack_start_defaults(GTK_BOX(hbox),btnquit);
  18.    
  19.     gtk_box_pack_start_defaults(GTK_BOX(vbox),entry);
  20.     gtk_box_pack_start_defaults(GTK_BOX(vbox),hbox);
  21.    
  22.     gtk_container_add(GTK_CONTAINER(wnd),vbox);
  23.     gtk_container_set_border_width(GTK_CONTAINER(wnd),5);
  24.     gtk_widget_show_all(wnd);
  25. }
  26. void FormDestroy(GtkWidget *widget,GdkEvent *event,gpointer data)
  27. {
  28.     gtk_main_quit();
  29. }
  30. void btntest_clicked(GtkButton *button,gpointer data)
  31. {
  32.     GString *teststr;
  33.     const gchar *textc = gtk_entry_get_text(GTK_ENTRY(entry));
  34.     teststr = g_string_new(textc);
  35.     int len = teststr->len;
  36.     g_printf("GString Len:%d\n",len);
  37.     g_printf("GString Allocated_Len:%d\n",teststr->allocated_len);
  38.     g_printf("GString Value:%s\n",teststr->str);
  39.     int i;
  40.     for (i = 0;i<len;i++)
  41.     g_printf("GString Value[%d]:%c\n",i,teststr->str);
  42.    
  43.     GString *partstr = g_string_sized_new(len - 2);
  44.     for (i = 1;i<=len - 2;i++)
  45.     g_string_append_c(partstr,teststr->str);
  46.     g_printf("PartStr GString Len And PartStr:%d %s\n",partstr->len,partstr->str);
  47.     g_string_free(teststr,TRUE);
  48. }
  49. int main(int argc,char *argv[])
  50. {
  51.     gtk_init(&argc,&argv);
  52.    
  53.     ui_init();
  54.    
  55.     g_signal_connect(G_OBJECT(wnd),"destroy",G_CALLBACK(FormDestroy),NULL);
  56.     g_signal_connect_swapped(G_OBJECT(btnquit),"clicked",G_CALLBACK(FormDestroy),NULL);
  57.     g_signal_connect(G_OBJECT(btntest),"clicked",G_CALLBACK(btntest_clicked),NULL);
  58.     gtk_main();
  59.     return 0;
  60. }
复制代码

评分

参与人数 1 +10 收起 理由
Tom + 10

查看全部评分

  • TA的每日心情
    奋斗
    2021-11-19 13:15
  • 签到天数: 20 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2010-8-30 20:09:47 | 显示全部楼层
    嗯,不错,呵呵,发贴,贴代码的时候,编辑框上有个代码的标签,这样效果会比较好一点。

    该用户从未签到

    发表于 2010-10-30 07:06:19 | 显示全部楼层
    嗯~~收藏啦。谢谢LZ。
  • TA的每日心情
    慵懒
    2013-7-6 15:08
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]初来乍到

    发表于 2011-9-11 00:26:45 | 显示全部楼层
    个人觉得 GString 里面 g_string_printf 最好用!很方便,而且不会溢出!
    *滑块验证:
    您需要登录后才可以回帖 登录 | 马上加入

    本版积分规则

    申请友链|Archiver|小黑屋|手机版|GTK+中文社区 ( 粤ICP备13080851号 )

    我要啦免费统计

    GMT+8, 2024-5-15 07:01 , Processed in 0.103203 second(s), 11 queries , Redis On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表