1

charaから aへの書き込みが許可されていることがわかりましたstd::wostream(たとえば、std::wcout<<"looooool";)。

どのようにchar変更されてwcharいますか (それが起こる場合)?

4

1 に答える 1

1

charaまたは c-string ( ) をワイド ストリームに送信するchar *と、個々のオクテット (バイト) が で wchar に変換されwidenます。からの自動変換はありませんstd::string

バイトは一度に 1 つずつ変換されるため、この方法でマルチバイト UTF-8 文字をワイド ストリームに送信することはできません。デフォルトのロケールでは、ASCII 以外の文字からワイド文字への変換は行われないため、変換は失敗し、ワイド ストリームはエラー状態になります。

この変換を利用するかどうかはあなた次第です。標準では許可されており、文字リテラルと文字列リテラルについては、少なくとも、私には無害に思えます。std::wstringただし、ワイド ストリームに送信する文字列オブジェクトはではなく、 である必要があることに注意してくださいstd::string

于 2013-02-03T05:30:27.860 に答える