E/S de fluxo Unicode em modos de texto e binários

Quando a rotina E/S de fluxo Unicode (como fwprintf, fwscanf, fgetwc, fputwc, fgetws ou fputws) opera em um arquivo que está aberto no modo de texto (o padrão), duas conversões de tipos de caractere ocorrem:

  • Conversão de Unicode em MBCS ou MBCS para Unicode. Quando uma função de E/S de fluxo Unicode opera no modo de texto, presume-se que o fluxo de origem ou destino é uma sequência de caracteres multibyte. Portanto, as funções de entrada de fluxo do Unicode convertem caracteres multibyte para caracteres largos (como por uma chamada à função mbtowc). Pelo mesmo motivo, as funções de saída de fluxo do Unicode convertem caracteres largos para caracteres multibyte (como por uma chamada à função wctomb).

  • Conversão CR-LF (retorno de carro – alimentação de linha). Essa conversão ocorre antes do MBCS – conversão Unicode (para funções de entrada de fluxo Unicode) e depois da conversão de Unicode – MBCS (para funções de saída de fluxo Unicode). Durante a entrada, cada combinação de retorno de carro – alimentação de linha é convertida em um caractere de alimentação de linha único. Durante a saída, cada caractere de alimentação de linha é convertido em uma combinação de retorno de carro – alimentação de linha.

No entanto, quando uma função de E/S de fluxo Unicode opera no modo binário, o arquivo é considerado como Unicode e nenhuma conversão de CR-LF ou conversão de caractere ocorre durante a entrada ou saída. Siga a instrução _setmode( _fileno( stdin ), _O_BINARY ); para usar wcin corretamente em um arquivo de texto UNICODE.

Confira também

Rotinas de runtime C universais por categoria
Entrada e saída