将字符数组转换为const gchar *

我有一个包含字符串的字符数组:

char buf[MAXBUFLEN]; buf[0] = 'f'; buf[1] = 'o'; buf[2] = 'o'; buf[3] = '\0'; 

我希望将此字符串作为参数传递给gtk_text_buffer_insert函数,以便将其插入到GtkTextBuffer 。 我无法弄清楚的是如何将它转换为const gchar * ,这是gtk_text_buffer_insert期望的第三个参数。

有人可以帮帮我吗?

gchar只是chartypedef ,从数组到const指针的转换是隐式的,所以你可以传递它:

 someFunctionExpectingConstGcharPointer(buf); 

请注意,您还可以使用字符串文字直接初始化数组:

 char buf[MAXBUFLEN] = "foo"; 

好的,我们等着瞧。 GTK +参考手册说:

gtk_text_buffer_insert()

void gtk_text_buffer_insert(GtkTextBuffer * buffer,GtkTextIter * iter, const gchar * text ,gint len);

在iter位置插入len个字节的文本。 如果len为-1,则text必须以nul结尾,并将完整插入。 发出“插入文本”信号; 插入实际上发生在信号的默认处理程序中。 插入发生时iter无效(因为缓冲区内容发生了变化),但默认信号处理程序重新validation它以指向插入文本的末尾。

buffer:一个GtkTextBuffer
iter:缓冲区中的一个位置
text:要插入的UTF-8格式文本
len:以字节为单位的文本长度,或-1

gchar
typedef char gchar;
对应于标准C char类型

这意味着可以使用char *代替gchar *。
虽然我没有使用gtk_text_buffer_insert(),但在其他需要gchar *的gtk +函数中,char *已经完美无缺。

希望它有所帮助。

这可能真的很晚,但万一其他人坚持这个与谷歌来这里:

 gtk_text_buffer_insert(GTK_TEXT_BUFFER(textbuffer),&iter,buffer,strlen(buffer)); 

应该做的伎俩。 问题是最后的空字符。 因此,通过发送字符串长度,您可以在空字符之前发送所有字符。