0

我正在努力尝试在我的 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。

如果你能以任何形式解决我的问题,甚至解释一下这些可变宽度编码/宽字符的关系。

4

1 回答 1

3

GTK 构建在Glib之上。而且 Glib 已经深深地假设所有字符串都是UTF-8编码的。wchar_t也不是很便携(在某些编译器上,它可能是 16 位,在其他编译器上,它可能是 32 位)。所以你应该避免在你的代码中使用wchar_tor 。std::wstring顺便说一句,如果您使用 C++ 编码,您可能会对Gtkmm感兴趣(然后考虑使用Glib::ustring -s)。

如果您出于某种原因绝对需要使用std::wstring,则必须手动显式地与 Glib UTF-8 编码字符串进行(可能是昂贵的)转换。

于 2012-11-23T12:52:31.530 回答