GString结构
来源:互联网 发布:数据采集卡报价 编辑:程序博客网 时间:2024/05/16 17:43
Glib数据结构
Glib数据结构
表
GList
最初都是NULL,不断插入形成表
name=g_list_append(name,datapointer) //注意这里并不是拷贝
name=g_list_prepend(name,datapointer);
name=g_list_insert(name,dattapointer,pos); //位置是从0开始
在表中移动
name=g_list_next(name)
name=g_list_previous(name;
name=g_list_last(name);
name=g_list_first(name);
name=g_list_nth(第一项);
g_list_free(表的第一项)
数据有时候需要g_free掉
使用比较函数
1. name=g_list_sort(name,(GCompareFunc)func);
gint (*GCompareFunc) (gconstpointer a, gconstpointer b) if (a<b) return -1 else if (a>b) return 1 else return 0;
2. name=g_list_insert_sorted(name,datapointer,(GCompareFunc)func);
3. name=g_list_remove(name,datapointer) 只有最前面的相同数据删除
name=g_list_remove_all(name,datapointer)
void g_list_foreach(name,(GFunc)func, user_data_pointer);
void (*GFunc) (gpointer data, gpointer user_data);
当然也有 g_slist_foreach()
GSList
最初都是NULL,不断插入形成表
name=g_slist_append(name,datap);
name=g_slist_prepend(name,datap);
name=g_slist_insert(name,datap);
在表中移动
name=g_slist_next(name);
name=g_slist_last(name)
name=g_slist_nth(第一项)
g_slist_free(表的第一项)
树
GTree *name = g_tree_new((GCompareFunc)func)); //这是一种平衡树
新建一个树需要一个比较函数,表中的比较函数也与之相同
插入一个数据,包含key,和value,比较函数用于key
void g_tree_insert(name,keypointer,valuepointer) //与g_list_insert()不同,如果有相同的key就会覆盖value
void g_tree_remove(name,keypointer)
gpointer g_tree_lookup(name,keypointer) 返回keypointer
void g_tree_traverse(name,(GTraverseFunc)func,GTraverseType type, usr_data_pointer);
gint (*GTraverseFunc)(gpointer key, gpointer value, gpointer data); 如果返回true就停止遍历,否则false
GTraverseType 有3中 G_IN_ORDER, G_PRE_ORDER, G_POST_ORDER
g_true_destroy()
字符串
GString
GString *myname; GString 实际只是保存一个指针和一个数的结构
myname=g_string_new("Peter");
或者 myname=g_string_size_new(1000);
赋值 g_string_assign(GString *, "string"); 如果 “string"的长度大于其长度,将会导致重新分配内存,从而更改相应的指针
myname=g_string_assign(myname,"Peter Jobs");
释放串
gchar *g_string_free(GString *, boolean) 如果为false只是删除这个结构,如果是true就会删除其串
返回null如果是真,否则返回其串,串可以接着使用
操作
myname=g_string_append(myname,"Pete");
myname=g_string_prepend(myname,"pete");
myname=g_string_insert(myname,10,"Gtk+/") 注意从0开始
myname=g_string_up
使用
g_print(myname->str)
myname=g_string_up(myname);
myname=g_string_down(myname);
myname=g_string_erase(myname,0,4); 要删除的文本的位置以及字符数
传统字符串
gchar me[] = "pete"
gchar *mini;
mini=strdup(me); 复制
mini=strndup(me,2); 复制前两个 使用完后记得g_free()
串比较
g_strcasecmp(gchar *,gchar *)
g_strncasecmp(gchar *,gchar *) 比较前n个字符 注意这个函数是基于字符是bytes
分解串
gchar **g_strsplit(gchar *,"分解串“,最大数组长度)
注意使用完后,用void g_strfreev(a) 释放这个字符串数组
计时器
GTimer *myt;
myt=g_timer_new();
g_timer_destroy(myt);
启动和停止
g_timer_start(myt);
g_timer_stop(myt);
g_timer_reset(myt);
g_timer_continue(myt);
时间
gdouble g_timer_elapsed(myt,gulong *) 返回的是秒,gulong是毫秒,如果不是null
原文地址 http://blog.chinaunix.net/space.php?uid=9466127&do=blog&id=2002369
- GString结构
- GString
- GString
- Groovy探索之Gstring
- GTK Gossip: GString
- GTK中的字符串操作GString
- glib中的GList ,GSList,GString,GTree,GTimer
- 结构
- 结构
- 结构
- 结构
- 结构
- 结构
- 结构
- 结构
- 结构
- 结构
- 结构
- matlab @函数句柄以及inline函数、匿名函数、自定义函数
- 由存储过程直接生成类文件
- (andorid)屏蔽home键和back键的方法,以及调用振动的方法
- UI界面设计工具、资源及网站
- 打开Flash builder 提示无法创建java虚拟机 .
- GString结构
- GNU binutils 使用技巧
- storyboard app应用开发流程
- js判断flash是否安装及版本
- wxPython编程
- shell调试技术
- 性能测试模型分析
- jdk1.5新特性——可变参数、增强for循环、枚举
- 将visual studio 2010生成的可执行工程打包成安装软件