gpt4 book ai didi

c - 如何从 GHashTable 访问 gpointer 指向的 GString

转载 作者:太空宇宙 更新时间:2023-11-04 07:35:37 25 4
gpt4 key购买 nike

C代码

#include <glib.h>
//...
GHashTable *hash = g_hash_table_new(NULL, NULL);
GString val;

g_hash_table_insert(hash, (int*)5, g_string_new("Bar"));
val = g_hash_table_lookup(hash, (int*)5); // line 10

printf("Foo ~ %s\n", val->str); // line 16

if (NULL == val) // line 18
printf("Eet ees null!\n");

产生了:

ctest.c:10: error: incompatible types in assignment

ctest.c:16: error: invalid type argument of '->' (have 'GString')

ctest.c:18: error: invalid operands to binary == (have 'void *' and 'GString')

我做错了什么? :(

编辑:有些人可能会感到困惑并自问“她为什么不使用 g_string_printf()?”

因为我需要访问 gchar *str,打印只是我“调试”它的方式。

编辑:添加了第 18 行,并对令人眼花缭乱的线条进行了评论(是的,到处都是白色的痕迹。我很可怕,我知道)。

最佳答案

函数g_string_new 返回一个GString *。这就是存储在哈希中的内容。函数 g_hash_table_lookup 返回一个 void *。您可能想要这样的东西:

GString *val;
val = g_hash_table_lookup(hash, (int*)5);
printf("Foo ~ %s\n", val->str);

关于c - 如何从 GHashTable 访问 gpointer 指向的 GString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9342186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com