私は ICU (IBM のユニコード ライブラリ) を初めて使用します。大きなファイルをチャンクで読み込んでおり、UTF-8 から UTF-16 に変換しようとしています。
ucnv_toUnicode を使用していますが、問題が発生しています。コンバーターによってターゲットに書き込まれたバイト数をどのように判断すればよいですか?
ucnv_toUnicode(conv, &target, targetLimit,
&source, sourceLimit, NULL,
feof(f)?TRUE:FALSE,
&status);
target は 4096 バイトのバッファです。
API ドキュメントによると、ucnv_toUnicode によって移動され、最後の UChar がコピーされた後にポイントされます。これを決定するために、ターゲットと元の位置の間である種の算術演算を行うことができるように思われますが、私は C が初めてです。誰か手を貸してもらえますか?
ここで、ターゲットに入れられたものを fwrite() したいとします。ユニットのサイズと数について fwrite に何を渡しますか?