Как установить текст в gtk, содержащий широкие символы?

Я пытаюсь установить массив wchar_t в своем приложении Gtk / c ++. По какой-то неизвестной причине методы Gtk не имеют перегруженной формы, которая поддерживает массивы wchar_t, а только gchar.

Я прочитал несколько статей, которые заставили меня задуматься о том, что это может быть проблемой кодирования переменной ширины, которая устанавливается в обычном UTF-8. Я пытаюсь сделать что-то вроде:

std::wstring propertiesText;

/*
String Manipulation...
*/

gtk_label_set_text( (GtkLabel*)_propertiesLabel, propertiesText.c_str() );

И, как я уже сказал, компилятор жалуется, что wchar_t не поддерживается этим методом.

Если вы можете очистить мою проблему в любой форме или даже объяснить что-то об этом отношении кодирования переменной ширины / отношения широких символов.

0

Решение

GTK построен выше бойкий. И Глиб глубоко предположил, что все струны UTF-8, закодирован. Также wchar_t не очень переносимо (на некоторых компиляторах это может быть 16 бит, на других это может быть 32 бита). Таким образом, вы должны избегать использования wchar_t или же std::wstring в вашем коде. Кстати, вы могли бы быть заинтересованы в Gtkmm если вы пишете в C ++ (тогда подумайте об использовании Glib :: ustring-с).

Если вам абсолютно необходимо использовать std::wstring по какой-то причине вам приходится делать (возможно, дорогостоящие) преобразования в и из строки Glib UTF-8 в явном виде вручную.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]