Поделиться через


Ввод-вывод в поток в кодировке Юникод в текстовом и двоичном режиме

Когда процедура потокового ввода-вывода Юникода (например, fwprintf, fwscanf, fgetwc, fputwc, fgetws или fputws) работает c файлом, открытым в текстовом режиме (по умолчанию), выполняются два типа преобразования символов:

  • Преобразование Юникод-в-MBCS или MBCS-в-Юникод. Если функция поточного ввода-вывода Юникода работает в текстовом режиме (по умолчанию) исходный или конечный поток рассматривается как последовательность многобайтовых символов. Поэтому входные функции потока Юникода преобразуют многобайтовые символы в расширенные (как если бы для этого вызывалась функция mbtowc). По той же причине выходные функции потока Юникода преобразуют расширенные символы в многобайтовые (как если бы для этого вызывалась функция wctomb).

  • Преобразование возврат каретки — перевод строки (CR-LF). Это преобразование происходит перед преобразованием MBCS –Юникод (для функций потокового ввода Юникода) и после преобразования Юникод – MBCS (для функций потокового вывода Юникода). Во время ввода, каждое сочетание возврат каретки — перевод строки преобразуется в один символ перевода строки. Во время вывода, каждое символ перевода строки преобразуется в комбинацию возврат каретки — перевод строки.

Однако, если функция потокового ввода/вывода Юникода работает в бинарном режиме, предполагается, что файл будет в Юникоде, и преобразование CR-LF или преобразование символов не происходит во время ввода или вывода. Используйте инструкцию _setmode( _fileno( stdin ), _O_BINARY ); чтобы правильно использовать wcin в текстовом файле Юникода.

См. также

Ссылки

Процедуры среды выполнения по категориям

Ввод и вывод