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