将字符数组转换为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
只是char
的typedef
,从数组到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));
应该做的伎俩。 问题是最后的空字符。 因此,通过发送字符串长度,您可以在空字符之前发送所有字符。