Dela via


Unicode-ström I/O i text- och binära lägen

När en Unicode-ström-I/O-rutin (till exempel fwprintf, fwscanf, fgetwcfputwc, fgetws, eller fputws) körs på en fil som är öppen i textläge (standard), sker två typer av teckenkonverteringar:

  • Unicode-till-MBCS- eller MBCS-till-Unicode-konvertering. När en Unicode stream-I/O-funktion fungerar i textläge antas käll- eller målströmmen vara en sekvens med flerbytestecken. Därför konverterar Unicode stream-input-funktionerna flerabytestecken till breda tecken (som vid ett anrop till funktionen mbtowc). Av samma anledning konverterar Unicode-strömutdatafunktionerna breda tecken till flerbytestecken (som vid ett anrop till funktionen wctomb).

  • Vagnretur och radmatning (CR-LF) översättning. Den här översättningen sker före MBCS – Unicode-konvertering (för Unicode-strömindatafunktioner) och efter Unicode – MBCS-konvertering (för Unicode-strömutdatafunktioner). Under indata översätts varje kombination av returlinjematning för vagn till ett enda radmatningstecken. Under utdata översätts varje radmatningstecken till en vagnreturlinjematningskombination.

Men när en Unicode stream-I/O-funktion fungerar i binärt läge antas filen vara Unicode och ingen CR-LF översättning eller teckenkonvertering sker under indata eller utdata. Använd instruktionen _setmode( _fileno( stdin ), _O_BINARY ); för att använda wcin den på rätt sätt i en UNICODE-textfil.

Se även

Universal C-körningsrutiner efter kategori
Indata och utdata