24

ICUの使用方法に関する簡単で実用的なC++の例を探しています。
ICUのホームページはこの点では役に立ちません。
Unicodeの内容と理由には興味がありません。
いくつかのデモは自己完結型ではなく、コンパイル可能な例ではありません(インクルードはどこにありますか?)
「Hello、World」のようなものを探しています:
UTF-8でエンコードされたファイルを開いて読み取る
方法STL/Boost文字列の使用方法UTF-8でエンコードされた文字列などを操作する関数。

4

2 に答える 2

12

バイト順マーク(BOM)を処理する必要がない限り、UTF-8ファイルを読み取る特別な方法はありません。UTF-8エンコーディングの動作方法により、ANSI文字列を読み取る関数はUTF-8文字列も読み取ることができます。

次のコードは、ファイル(ANSIまたはUTF-8)の内容を読み取り、いくつかの変換を実行します。

#include <fstream>
#include <string>

#include <unicode/unistr.h>

int main(int argc, char** argv) {
    std::ifstream f("...");
    std::string s;
    while (std::getline(f, s)) {
        // at this point s contains a line of text
        // which may be ANSI or UTF-8 encoded

        // convert std::string to ICU's UnicodeString
        UnicodeString ucs = UnicodeString::fromUTF8(StringPiece(s.c_str()));

        // convert UnicodeString to std::wstring
        std::wstring ws;
        for (int i = 0; i < ucs.length(); ++i)
            ws += static_cast<wchar_t>(ucs[i]);
    }
}

オンラインAPIリファレンスをご覧ください。

Boostを介してICUを使用する場合は、Boost.Localeを参照してください。

于 2011-05-15T23:15:18.070 に答える
10
  • ICU≠Boostなので、ICU関数を使用して文字列を操作する方法の例がありますが、Boostはありません。

  • どのサンプルを見ていますか?ICUソースツリー内のicu/source / samplesの下にサンプルがあります-コンバーターのサンプルはutf-8を開いたり閉じたりします。また、「iconv」のようなアプリケーションであるicu / source / extras/uconvもあります。

  • その他のサンプルはhttp://source.icu-project.org/repos/icu/icuapps/trunk/にあります

お役に立てれば

于 2011-05-17T18:19:08.600 に答える