2

basic_stream<char>ロケールにcodecvt_utf16<char>ファセットを吹き込むとどうなるかは指定されていますか?

基本的に、ライブラリの Unicode ビルドと非 Unicode ビルドのインターフェイスを変更するためにtypedef wchar_t tchar;andを使用します。ファイルストリームにロケールとファセットtypedef char tchar;を常に吹き込むことで、ソースをよりシンプルにしたいと考えています。codecvt_utf16<tchar>これはとにかく機能しますか?

(そのような inbued によって読み取られるファイルが、fstreamASCII のみ、または現在のグローバル ロケールで表現可能なコード ポイントのみのいずれかを含む必要があるかどうかは気にしません。)

編集:

それcodecvt_utf16<char>が不特定の動作であるように思われる場合、basic_stream に を吹き込むのはcodecvt_utf16<wchar_t>どうですか? この動作は指定されていますか?

4

1 に答える 1

1

C++0x では、codecvt_utf*<>ワイド文字のみでインスタンス化できます。使用するとどうなるかcharは指定されていません。知る唯一の方法は試してみることです。

codecvt_utf16 は、外部 UTF-16 表現との間で変換を行うことに注意してください。つまり、ファイルは UTF-16 でエンコードされているはずです。代わりに UTF-8 の使用を検討することをお勧めします。

余談ですが、なぜ最近、非 Unicode が必要なのかは謎です。人々は制限された文字セットの使用を楽しんでいますか?

于 2011-08-22T13:55:02.867 に答える