Sdílet prostřednictvím


Bajtové a široké streamy

Bajtový datový proud považuje soubor za posloupnost bajtů. V rámci programu je stream identickou sekvencí bajtů.

Naproti tomu široký datový proud považuje soubor za posloupnost zobecněných vícebajtových znaků, které můžou mít širokou škálu pravidel kódování. (Textové a binární soubory se stále čtou a zapisují podle předchozího popisu.) V rámci programu datový proud vypadá jako odpovídající posloupnost širokých znaků. Převody mezi těmito dvěma reprezentacemi probíhají v rámci standardní knihovny jazyka C. Pravidla převodu mohou být v zásadě změněna voláním setlocale , které mění kategorii LC_CTYPE. Každý široký datový proud určuje pravidla převodu v době, kdy se zorientuje, a zachová tato pravidla i v případě, že se kategorie LC_CTYPE později změní.

Umístění v rámci širokého datového proudu má stejná omezení jako u textových datových proudů. Kromě toho může být indikátor pozice souboru dobře muset řešit kódování závislé na stavu. Obvykle zahrnuje posun bajtů v rámci datového proudu i objekt typu mbstate_t. Jediný spolehlivý způsob, jak získat pozici souboru v rámci širokého datového proudu je voláním fgetpos, a jediný spolehlivý způsob, jak obnovit pozici získanou tímto způsobem je voláním fsetpos.

Viz také

Soubory a streamy
setlocale, _wsetlocale