Unicodestream-E/A im Text- und Binärmodus
Wenn eine Unicodestream-E/A-Routine (z.B. fwprintf
, fwscanf
, fgetwc
, fputwc
, fgetws
oder fputws
) mit einer im Textmodus (Standard) geöffneten Datei arbeitet, finden zwei Arten von Zeichenkonvertierungen statt:
Konvertierung von Unicode zu MBCS oder von MBCS zu Unicode. Wenn eine Unicodestream-E/A-Funktion im Textmodus arbeitet, wird angenommen, dass es sich bei Quell- oder Zielstream um eine Sequenz von Multibytezeichen handelt. Daher konvertieren die Unicode Streameingabefunktionen Multibytezeichen in Breitzeichen (wie bei einem Aufruf der
mbtowc
-Funktion). Aus demselben Grund konvertieren die Unicode-Streamausgabefunktionen Breitzeichen in Multibytezeichen (wie bei einem Aufruf derwctomb
-Funktion).Übersetzung von Wagenrücklauf-Zeilenvorschub (CR-LF) Diese Übersetzung findet vor der MBCS-Unicode-Konvertierung (für Unicode-Streameingabefunktionen) und nach der Unicode-MBCS-Konvertierung (für Unicode-Streamausgabefunktionen) statt. Bei der Eingabe wird jede Kombination aus Wagenrücklauf und Zeilenvorschub in ein einzelnes Zeilenvorschubzeichen übersetzt. Bei der Ausgabe wird jedes Zeilenvorschubzeichen in eine Kombination aus Wagenrücklauf und Zeilenvorschub übersetzt.
Wenn jedoch eine Unicodestream-E/A-Funktion im binären Modus arbeitet, wir von einer Unicode-Datei ausgegangen und es erfolgt keine CR-LF-Übersetzung oder Zeichenkonvertierung während der Ein- und Ausgabe. Verwenden Sie die _setmode( _fileno( stdin ), _O_BINARY );
-Anweisung, um wcin
ordnungsgemäß für eine UNICODE-Textdatei zu verwenden.
Siehe auch
Universelle C-Laufzeitroutinen nach Kategorie
Eingabe und Ausgabe