Boost.Locale - C ++のUnicode文字列

Boost.LocaleでUnicodeをサポートしているアプリケーションのstd :: stringをすべて作成できますか?ドキュメントを読んだ後、私は「はい」と言うことができます。しかし、私はそれがどのように機能するのか分かりません。主な質問は、私はまだブースト文字列アルゴリズムライブラリまたはBoost.Lexical_Castライブラリを使用することができますか?はいの場合、 boost :: locale: :to_upper などの形式のメソッドを使用しています。

1

1 答え

はい、Boost.Localeでエンコードされたアプリケーションのすべての文字列をUnicodeにすることができます。

To make it work you imbue the locale into the string, or set the default global locale to your new unicode-based locale (generated by Boost.Locale). See here for how to do that: http://www.boost.org/libs/locale/doc/html/locale_gen.html and http://www.boost.org/libs/locale/doc/html/faq.html

The string manipulation APIs in Boost.Locale are different to the ones provided in the Boost string algorithm library. See here for why the Boost.Locale functions are better: http://www.boost.org/libs/locale/doc/html/conversions.html

グローバルロケールを正しく設定していれば、引き続きboost :: lexical_castを使うことができます(正しく思い出すと、明示的にロケールオブジェクトをBoost.LexicalCastに渡すことはできません)。

しかし、Cのロケールを使用するのではなく、整数を文字列に変換する場合(これは恐らく以前のデフォルトだったように)には、これを '中断する'ことに注意してください。別のものを使用します。ユーザに表示されない変換を行うときは、std :: stringstreamなどを直接使用して、これらの望ましくない書式変更を避けることができます。

Boost.Localeのドキュメントを完全に読むことを強くお勧めします。あなたの懸念(特にFAQ、世代バックエンド情報など)の問題に対処する必要があります。

2
追加された