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çãowctomb
).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