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 に答える