I/O flusso Unicode in modalità testo e binaria
Quando una routine di I/O del flusso Unicode (come fwprintf
, fwscanf
, fgetwc
, fputwc
, fgetws
o fputws
) opera su un file aperto in modalità testo (impostazione predefinita), due tipi di conversioni di carattere vengono eseguite:
Conversione Unicode in MBCS o MBCS in Unicode. Quando una funzione di I/O del flusso Unicode viene eseguita in modalità testo, si presuppone che il flusso di origine o di destinazione sia una sequenza di caratteri multibyte. Di conseguenza, le funzioni Unicode di input flusso convertono i caratteri multibyte in caratteri "wide", come se fosse una chiamata alla funzione
mbtowc
. Per qualche motivo, le funzioni Unicode di output flusso convertono i caratteri "wide" in caratteri multibyte, come se fosse una chiamata alla funzionewctomb
.Conversione di ritorno a capo-avanzamento riga. Questa conversione si verifica prima della conversione MBCS - Unicode (per le funzioni di input del flusso Unicode) e dopo la conversione Unicode - MBCS (per le funzioni di output del flusso Unicode). Durante l'input, ogni combinazione di ritorno a capo-avanzamento riga viene convertita in un singolo carattere di avanzamento riga. Durante l'output, ogni carattere di avanzamento riga viene convertito in una combinazione di ritorno a capo-avanzamento riga.
Tuttavia, quando una funzione di I/O del flusso Unicode viene eseguita in modalità binaria, il file viene considerato come Unicode e nessuna conversione CR-LF o conversione di caratteri si verifica durante l'input o l'output. Usare l'istruzione _setmode( _fileno( stdin ), _O_BINARY );
per usare correttamente wcin
in un file di testo Unicode.