Udostępnij za pośrednictwem


Strumień We/Wy Unicode w trybach tekstowym i binarnym

Gdy procedury we/wy strumienia Unicode (takie jak fwprintf, , fwscanf, fgetwcfputwc, fgetwslub fputws) działają na pliku otwartym w trybie tekstowym (ustawienie domyślne), mają miejsce dwie konwersje znaków:

  • Konwersja unicode-to-MBCS lub MBCS-to-Unicode. Gdy funkcja We/Wy Unicode działa w trybie tekstowym, przyjmuje się, że strumień źródłowy lub docelowy jest sekwencją znaków wielobajtowych. W związku z tym funkcje przesyłania strumieniowego Unicode konwertują znaki wielobajtowe na znaki szerokie (tak jak wywołanie mbtowc funkcji). Z tego samego powodu funkcje przesyłania strumieniowego Unicode konwertują znaki szerokie na znaki wielobajtowe (tak jak w przypadku wywołania wctomb funkcji).

  • Translacja karetki powrotnej linii (CR-LF). To tłumaczenie odbywa się przed konwersją MBCS — Unicode (dla funkcji wejściowych strumienia Unicode) i po konwersji Unicode — MBCS (dla funkcji wyjściowych strumienia Unicode). Podczas wprowadzania każda kombinacja zestawienia powrotnego karetki jest tłumaczona na pojedynczy znak kanału informacyjnego. Podczas danych wyjściowych każdy znak kanału informacyjnego wiersza jest tłumaczony na kombinację zestawienia powrotnego karetki.

Jednak gdy funkcja strumienia-we/wy Unicode działa w trybie binarnym, przyjmuje się, że plik jest unicode, a podczas wprowadzania lub wyjścia nie występuje translacja CR-LF ani konwersja znaków. Użyj instrukcji _setmode( _fileno( stdin ), _O_BINARY ); w celu poprawnego użycia wcin w pliku tekstowym UNICODE.

Zobacz też

Procedury czasu wykonywania języka Universal C według kategorii
Dane wejściowe i wyjściowe