構成:
- OS: Windows 7 (32ビット)
- Phobos 標準ライブラリを使用した DMD 2.58
私の意図:
2007 年に書かれた古いパッケージ (10 個のモジュール) の移植を開始しました。完全な Unicode サポートが特徴で、その機能を維持したいと考えています。
その作成者はclass UnicodeBom(T)、次の目的のために特定のモジュール ( ) を作成しました。非常に複雑なアプローチです (少なくとも、私は熱狂的ファンであり、C++/Qt/C# 入門の経験しかない初心者であることを考えると)!
私はすべてのモジュールからコードフラグメントをクリーンアップTangoし、ボックスで作業することに成功しました (確かにユニット/モジュールレベルで) これまでのところ、10 個中 4 個のモジュールのみです。
コードフラグメント:
this(Stream st) {
void[] buf;
buf.length = cast(uint) st.size;
st.readBlock(buf.ptr, cast(uint) st.size);
auto unicode = new UnicodeBom!(wchar)(Encoding.Unknown); // <<< to refactor
mSourceBuffer = unicode.decode(buf); // <<< to refactor
}
どこ
- st (パラメータ) は
std.stream.Stream - mSourceBuffer (プライベート フィールド) は
wchar[]
見積もり:
メソッドに関連するコード ドキュメントからの抜粋final T[] decode (void[] content):
提供されたコンテンツを変換します。BOM 署名の内容が検査され、削除されます。署名が存在する場合、エンコーディング タイプによって存在すべきでない場合に、例外がスローされます。逆に、現在のエンコーディングで既知の署名が存在すると予想される場所に既知の署名がない場合は、例外がスローされます。
私の質問:
Druntimeすぐに使える、および/またはPhobos同じ結果につながるリソースを使用する最新のより慣用的なアプローチはありますか (つまり、UTF8/16/32 ファイルをロードし、BOM なしで wchar[] に変換します)?
前もって感謝します。