テキスト モードとバイナリ モードの Unicode ストリーム入出力
Unicode のストリーム I/O ルーチン (fwprintf、fwscanf、fgetwc、fputwc、fgetws、または fputwsなど) テキスト モード (既定) で開いているファイルを操作すると、2 種類の文字変換:が行われます。
UNICODE に MBCS または MBCS に UNICODE の変換。 Unicode ストリーム I/O 関数がテキスト モードで実行するときは、ソースまたはターゲットのストリームはマルチバイト文字のシーケンスと見なされます。 このため、Unicode ストリーム入力関数はマルチバイト文字をワイド文字に変換し、mbtowc 関数を呼び出した場合と同様の効果を得ます。 同様の理由で、Unicode ストリーム出力関数は、wctomb 関数が呼び出されたかのように、ワイド文字をマルチバイト文字に変換します。
–復帰とライン フィード (CR-LF) に変換します。 この変換は MBCS – Unicode 変換の前に (Unicode ストリームの入力関数の場合) – Unicode と MBCS の変換後に発生します (Unicode ストリームの出力関数の場合)。 入力中、各–復帰とライン フィードのペアは、単一のライン フィードの文字に変換されます。 出力中、各ライン フィードの文字は–復帰とライン フィードの組み合わせに変換されます。
ただし、Unicode ストリーム I/O 関数がバイナリ モードで実行すると、ファイルは Unicode であると見なされ、CR-LF の変換または文字変換は入力または出力中に発生しません。 _setmode (_fileno (stdin)、_O_BINARY) ;を使用します。手順正しく UNICODE のテキスト ファイルの wcin を使用します。