文字和二進位模式的 Unicode 資料流 I/O
當 Unicode 資料流 I/O 常式 (例如 fwprintf、 fwscanf、 fgetwc、 fputwc、 fgetws或 fputws) 上開啟於文字模式的檔案 (預設值)時,這兩種字元轉換發生:
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。