如何将glib GString的内容打印到stdout?

时间:2018-01-24 16:48:36

标签: glib

我是glib及其习语的新手。我使用GString来从URL的下载中累积缓冲区。现在我想将该缓冲区打印到stdout。 现在我正在使用像

这样的代码
int len = catalogBuffer->len;
gchar *cat = g_string_free(catalogBuffer, FALSE);
catalogBuffer=0;
write(1, cat, len);  // this might not do everything if the OS returns a partial write
g_free(cat);

但它看起来很笨拙。有没有更好的成语呢?

2 个答案:

答案 0 :(得分:0)

g_string_free()返回的字符串以0结尾,因此您可以执行此操作:

char *cat = g_string_free(catalogBuffer, FALSE);
g_print("%s\n", cat);
g_free(cat);

答案 1 :(得分:0)

您还可以直接从GString

中读取以空字符结尾的字符串
const char *cat = catalogBuffer->str;
g_print ("%s\n", cat);
…
g_string_free (catalogBuffer, TRUE);