テキスト モードとバイナリ モードの Unicode ストリーム入出力

UnicodeTM ストリーム入出力ルーチン (fwprintffwscanffgetwcfputwcfgetwsfputws など) がテキスト モード (既定) で開かれたファイルを操作すると、以下の 2 種類の文字変換が行われます。

  • Unicode からマルチバイト文字セット (MBCS: Multibyte Character Set) への変換、または MBCS から Unicode への変換。 Unicode ストリーム入出力関数をテキスト モードで実行すると、入力ストリームまたは出力ストリームはマルチバイト文字のシーケンスであると想定されます。 このため、Unicode ストリーム入力関数はマルチバイト文字をワイド文字に変換し、mbtowc 関数を呼び出した場合と同様の効果を得ます。 同様の理由で、Unicode ストリーム出力関数は、wctomb 関数が呼び出されたかのように、ワイド文字をマルチバイト文字に変換します。

  • キャリッジ リターンとライン フィード (CR-LF: Carriage return – linefeed) の変換。 CR-LF 変換は、MBCS から Unicode への変換の前 (Unicode ストリーム入力関数の場合) と Unicode から MBCS への変換の後 (Unicode ストリーム出力関数の場合) に行われます。 入力時には、それぞれの CR-LF シーケンスが 1 つのライン フィード文字に変換されます。 出力時には、それぞれのライン フィード文字が CR-LF シーケンスに変換されます。

ただし、Unicode ストリーム入出力関数をバイナリ モードで実行すると、ファイルが Unicode であると想定されるため、入出力時に CR-LF 変換も文字変換も行われません。 Unicode テキスト ファイルで wcin オブジェクトを正しく使用するための命令 _setmode( _fileno( stdin ), _O_BINARY ) を使用してください。

参照

参照

カテゴリ別ランタイム ルーチン

入出力