Я пытаюсь установить массив 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 не поддерживается этим методом.
Если вы можете очистить мою проблему в любой форме или даже объяснить что-то об этом отношении кодирования переменной ширины / отношения широких символов.
GTK построен выше бойкий. И Глиб глубоко предположил, что все струны UTF-8, закодирован. Также wchar_t не очень переносимо (на некоторых компиляторах это может быть 16 бит, на других это может быть 32 бита). Таким образом, вы должны избегать использования wchar_t
или же std::wstring
в вашем коде. Кстати, вы могли бы быть заинтересованы в Gtkmm если вы пишете в C ++ (тогда подумайте об использовании Glib :: ustring-с).
Если вам абсолютно необходимо использовать std::wstring
по какой-то причине вам приходится делать (возможно, дорогостоящие) преобразования в и из строки Glib UTF-8 в явном виде вручную.
Других решений пока нет …