我正在努力尝试在我的Gtk / c ++应用程序中设置wchar_t数组。由于某些未知原因,Gtk方法没有重载形式,它支持wchar_t数组但只支持gchar数组。
我读过一些文章让我想知道它可能是一个可变宽度编码问题,它是用普通的UTF-8设置的。我正在尝试做类似的事情:
std::wstring propertiesText;
/*
String Manipulation...
*/
gtk_label_set_text( (GtkLabel*)_propertiesLabel, propertiesText.c_str() );
正如我所说,编译器抱怨此方法不支持wchar_t。
如果您可以以任何形式清除我的问题,甚至可以解释有关这些可变宽度编码/宽字符关系的信息。
答案 0 :(得分:3)
GTK建立在Glib之上。并且Glib深深地认为所有字符串都是UTF-8编码的。另外wchar_t不是很便携(在某些编译器上,它可能是16位,在其他编译器上,它可能是32位)。因此,您应避免在代码中使用wchar_t
或std::wstring
。顺便说一句,如果您使用C ++进行编码,那么您可能对Gtkmm感兴趣(然后考虑使用Glib::ustring - s)。
如果您出于某种原因绝对需要使用std::wstring
,则必须手动明确地与Glib UTF-8编码字符串进行(可能代价很高)转换。