問題タブ [boost-locale]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Boost Locale 境界分析が char16_t で機能しない
boost::locale::boundary::segmant_index
記号で構成される文字列の境界を分析するために使用しようとしていchar16_t
ます。ただし、コンパイル中に次のエラーが発生します (Boost 1.54、GCC 4.8.1):
UPD:これが例です
c++ - プレーンな C++/Boost を使用した Unicode ファイル名のファイルの読み取り/書き込み
Windows(mingw)でブーストファイルシステム、ブーストロケールを使用してUnicodeファイル名のファイルを読み書きしたい(最後はプラットフォームに依存しないはず)。
これは私のコードです:
はfs::exists
、 という名前のファイルを実際にチェックしますäöü.txt
。しかし、書き込まれたファイルの名前はäöü.txt
.
読むと同じ問題が発生します。これはワイド入力を処理するだけなので、使用fs::wofstream
しても役に立ちません。
C++11 とブーストを使用してこれを修正するにはどうすればよいですか?
編集:投稿されたバグレポート: https://svn.boost.org/trac/boost/ticket/9968
報奨金を明確にするために: Qt では非常に単純ですが、C++11 と Boost のみを使用し、Qt と ICU を使用しないクロスプラットフォーム ソリューションが必要です。
boost - Boost::Locale を Visual C++ 2013 で ICU 53.1 でビルドできない
「Boost.Locale のビルド」手順を使用して、Boost::Locale (Boost バージョン 1.56) をビルドしようとしています。まず、数か月前に完全な Boost ライブラリのインストールに成功しました。これにより、多数の Boost::Locale .dll および .lib ファイルが作成されました。
今日、ICU4C 53.1 をダウンロードしてビルドしました (デバッグとリリースの両方)。次のディレクトリをコンピューター パスに追加しました。
次に、ICU テストを実行しましたが、問題なく実行されました。
次に、Boost::Locale を ICU にリンクしようとしましたが、Locale のインストール手順に示されているように、次のことを行いました。
コマンドプロンプトから、次のように入力しました。
構築中であることを示し、画面に「...忍耐...1214個のターゲットが見つかりました...」と表示されました
D:\boost_1_56_0\bin.v2\config.log の結果は次のとおりです。
この時点では、どの「ターゲット」が更新されたのかわからないため、サポートされているバックエンドを確認するためにget_all_backends()を使用して小さなテスト アプリを作成しました。残念ながら、winapiとstdしかリストされていませんでした。
誰かが何がうまくいかなかったのかを示唆できますか?
アップデート
Locale jam ファイルを開くと、次のようになります。
これについてはよくわかりませんが、上記のスニペットはicudtを参照しており、dllファイルにICUのバージョンが追加されていることに気付きました.icudt
追加されたバージョン、つまりicudt53に一致するように参照を更新し、何が起こるかを確認します。
c++ - boost::locale は、2 つの別個の同一のシステムで異なる動作をする
私はこのプログラムを持っています:
および で実行されている 2 つの異なるが同一のシステムでは、動作が異なりDebian Wheezy
ます。両方のシステムのロケールは同じです。gcc 4.7.2-5
boost 1.49
en_US.UTF-8
上のプログラムは あたりに実行されましたThu Sep 25 2014 11:15 UTC
。
システム A の出力
システム B の出力
これを引き起こす原因は何ですか?
注:現在、DST はヨーロッパ/ベルリンで有効です。
アップデート:
libboost1.49-dev
両方のシステムで、次のように Debian リポジトリからインストールされます。
またlibboost_locale.so
、依存関係libicuuc.so
がlibicui18n.so
ありlibicudata.so
、両方のシステムで確認されました。
c++ - Boost Locale – ICU 機能に直接アクセス
私は最近、Boost Locale トラバースと Unicode 文字列の境界分析を使い始めました。ICU の toUpper() 関数をラップしているように見えるto_upper()など、大文字と小文字の変換に使用できるいくつかの機能を使用しました。
u_isalpha()やu_isalnum( )などの他の ICU 関数の Boost Locale ラッパーは見つかりませんでした。これらの ICU 機能をどのように使用できますか?
ありがとうございました!
c++ - boost::locale::transform のポータブルな使用法
文字列の部分文字列の検索を実装していますが、この検索を「アクセントニュートラル」にしたい、またはラフと呼ばれる可能性があります-「rábano」で「aba」の検索を開始すると、成功するはずです。
ロケールを使用して文字列内の部分文字列を検索するには、有効な答えがあります。
このソリューションの唯一の問題は、変換によって文字列の末尾に数バイトが追加されることです。私の場合は「\x1\x1\x1\x1\x0\x0\x0」です。1 バイトといくつかの 0 バイトを含む 4 バイト。もちろん、これらのバイトを消去するのは簡単ですが、そのような微妙な実装の詳細に依存したくありません。(コードはクロスプラットフォームであると想定されています)
もっと信頼できる方法はありますか?
visual-studio-2010 - boost::locale 1.57.0 と ICU ライブラリ 54.1 を Windows (VC++ 2010) で使用
Windows 8.1 で ICU ライブラリ サポート 54.1 を使用して Boost::locale 1.57.0 をビルドしようとしています。C:\icu にライブラリがあり、次のようなファイルがあります。
私は以下を実行しました:
しかし、その後、次のメッセージを受け取りました。
これらのメッセージは、ICU のサポートがまったく得られないことを意味しますか? ここで何が問題になる可能性がありますか?
c++ - ブースト ロケール境界分析をアポストロフィで分割することは可能ですか?
たとえば、次のコードを考えてみましょう。
これは以下を出力します:
代わりに出力するように境界分析をカスタマイズすることは可能ですか:
http://www.boost.org/doc/libs/1_56_0/libs/locale/doc/html/boundary_analysys.htmlを読み、Stack Overflow と Google を検索しましたが、これまでのところ何も見つかりませんでした。