我有一个包含字符串的字符数组:
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
期望的第三个参数。
有人可以帮帮我吗?
答案 0 :(得分:7)
gchar
只是typedef
的{{1}},从数组到const指针的转换是隐式的,所以你可以传递它:
char
请注意,您也可以使用字符串文字直接初始化数组:
someFunctionExpectingConstGcharPointer(buf);
答案 1 :(得分:1)
好吧,让我们看看。 GTK+ reference manual说:
gtk_text_buffer_insert()
void gtk_text_buffer_insert(GtkTextBuffer * buffer, GtkTextIter * iter, const gchar * text , gint len);
在iter位置插入len个字节的文本。如果len为-1,则文本必须以nul结尾,并将完整插入。发出“插入文本”信号;插入实际上发生在信号的默认处理程序中。插入发生时iter无效(因为缓冲区内容发生了变化),但默认信号处理程序重新验证它以指向插入文本的末尾。
缓冲区:GtkTextBuffer
iter:缓冲区中的位置
文字:要插入的UTF-8格式文字
len:以字节为单位的文本长度,或-1
和
gchar
typedef char gchar;
对应标准C char类型
这意味着可以使用char *代替gchar *。
虽然我没有使用过gtk_text_buffer_insert(),但是在其他需要gchar *的gtk +函数中,char *运行得很完美。
希望它有用。
答案 2 :(得分:1)
这可能真的很晚了,但是如果有其他人坚持使用谷歌来这里:
gtk_text_buffer_insert(GTK_TEXT_BUFFER(textbuffer),&iter,buffer,strlen(buffer));
应该做的伎俩。问题是最后的空字符。因此,通过发送字符串长度,您可以在空字符之前发送所有字符。