C++ 11以降では、文字列リテラルに接頭辞u8
を使用すると、UTF-8でエンコードされたchar
(バイト)のシーケンスを作成できます。出力UTF-8(u8)std :: string
どのようにして出力を行うそれらの配列std::ostream
に?どのように出力されるべきconst char *
またはstd:string
ではなく、デフォルトのエンコードよりも、UTF-8でエンコードされた文字が含まれていることをstd::ostream
を教えていますか?
C++ 11以降では、文字列リテラルに接頭辞u8
を使用すると、UTF-8でエンコードされたchar
(バイト)のシーケンスを作成できます。出力UTF-8(u8)std :: string
どのようにして出力を行うそれらの配列std::ostream
に?どのように出力されるべきconst char *
またはstd:string
ではなく、デフォルトのエンコードよりも、UTF-8でエンコードされた文字が含まれていることをstd::ostream
を教えていますか?
あなたにはありません。ストリームは、テキストのエンコーディングが何であるかを知らないか、気にしません。それの名前にもかかわらず、char
は、プラットフォームのエンコーディングでエンコードされた文字を含むようstd:ostream
によって処理されていません。書き込まれるバイトとしてchar
を処理する必要があります。これは、これを変更するファセットでそれを埋め込まないと仮定して、与えられた通りの "テキスト"(バイトシーケンス)を書き込みます(おそらく実行の外に\n
の変換を行います)。 UTF-8に準拠した文字を書くと、それが出力に終わる。うつ病、bemusement、そして怒りの混合物で
あなたは'のstd :: ostream'は 'STDを扱うことを言っていますか? – Raedwald
@ Raedwald:はい。それはちょうど 'char'のシーケンスです。それ以外に何を入力として扱いますか? –
、私は(https://stackoverflow.com/a/17106065/545127)[標準C++でのUnicodeのサポートはひどい]ことを学んでいます。 STRING'をバイト(char' 'につき1バイト)のシーケンスとしてではなく、プラットフォームのエンコーディングの文字の配列より: – Raedwald