我想使用字符串作为键,并找到我的值,我的值必须是指针。
#include <stdio.h>
#include <glib.h>
int main()
{
GHashTable *hash_list; ///denfine my hashtable
char str1[32];
sprintf(str1, "key");
char str2[32];
sprintf(str2, "key");
hash_list = g_hash_table_new(g_str_hash, g_direct_equal); ///create my hashtable
g_hash_table_insert(tcp_stream_list, str1, "ssssssssssssssss"); ///insert my key and value
char *c = (char*) g_hash_table_lookup(tcp_stream_list, (str2)); ///find my key
if (c)
{
printf("%s\n", c); ///print the string
}
return 0;
}
答案 0 :(得分:1)
如果使用字符数组作为键,则在创建哈希表时必须使用g_str_equal
但g_direct_equal
。
如果使用g_direct_equal
,则不比较键值指向的数组,但指针值自己。
因此对于使用g_direct_equal
的哈希表(根据OP的来源),以下行将成功找到之前插入的条目(使用str1
):
char * c = (char*) g_hash_table_lookup(hash_list, str1);
但是:您可能想决定使用什么作为密钥:
g_direct_equal
)g_str_equal
)