gpt4 book ai didi

c++ - 如何在 gtk 中设置包含宽字符的文本?

转载 作者:行者123 更新时间:2023-11-28 00:52:13 26 4
gpt4 key购买 nike

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

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

最佳答案

GTK 构建于 Glib 之上. Glib 深深地认为所有字符串都是 UTF-8编码。还有 wchar_t不是很便携(在某些编译器上,它可能是 16 位,在其他编译器上,它可能是 32 位)。因此,您应该避免在代码中使用 wchar_tstd::wstring。顺便说一句,你可能对Gtkmm感兴趣如果您使用 C++ 进行编码(那么请考虑使用 Glib::ustring -s)。

如果您出于某种原因绝对需要使用 std::wstring,您必须明确地手动进行(可能代价高昂的)与 Glib UTF-8 编码字符串之间的转换。

关于c++ - 如何在 gtk 中设置包含宽字符的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13529451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com