Dela via


Byte- och bredströmmar

En byteström behandlar en fil som en sekvens med byte. I programmet är strömmen den identiska sekvensen av byte.

En bred ström behandlar däremot en fil som en sekvens med generaliserade flerbytestecken, som kan ha ett brett utbud av kodningsregler. (Text- och binärfiler är fortfarande lästa och skrivna enligt beskrivningen ovan.) I programmet ser strömmen ut som motsvarande sekvens med breda tecken. Konverteringar mellan de två representationerna sker i Standard C-biblioteket. Konverteringsreglerna kan i princip ändras av ett anrop till setlocale som ändrar kategorin LC_CTYPE. Varje bred ström avgör sina konverteringsregler när den blir bredorienterad och behåller dessa regler även om kategorin LC_CTYPE senare ändras.

Positionering inom en bred ström har samma begränsningar som för textströmmar. Dessutom kan filpositionsindikatorn mycket väl behöva hantera en tillståndsberoende kodning. Vanligtvis innehåller den både en byteförskjutning i strömmen och ett objekt av typen mbstate_t. Därför är det enda tillförlitliga sättet att få en filposition inom en bred ström genom att anropa fgetpos, och det enda tillförlitliga sättet att återställa en position som erhålls på detta sätt är genom att anropa fsetpos.

Se även

Filer och strömmar
setlocale, _wsetlocale