Udostępnij za pośrednictwem


Strumienie byte oraz szerokie

Strumień bajtów traktuje plik jako sekwencję bajtów. W programie strumień jest identyczną sekwencją bajtów.

Natomiast szeroki strumień traktuje plik jako sekwencję uogólnionych znaków wielobajtowych, które mogą mieć szeroką gamę reguł kodowania. (Pliki tekstowe i binarne są nadal odczytywane i zapisywane zgodnie z wcześniejszym opisem). W programie strumień wygląda jak odpowiednia sekwencja szerokich znaków. Konwersje między dwiema reprezentacjami występują w standardowej bibliotece C. Reguły konwersji mogą być w zasadzie zmieniane przez wywołanie setlocale , które zmienia kategorię LC_CTYPE. Każdy strumień szeroki określa jego reguły konwersji w momencie, gdy staje się szeroko zorientowany, i zachowuje te reguły, nawet jeśli kategoria LC_CTYPE później ulegnie zmianie.

Pozycjonowanie w szerokim strumieniu ma takie same ograniczenia jak w przypadku strumieni tekstowych. Ponadto wskaźnik położenia pliku może również mieć do czynienia z kodowaniem zależnym od stanu. Zazwyczaj zawiera zarówno przesunięcie bajtu w strumieniu, jak i obiekt typu mbstate_t. W związku z tym jedynym niezawodnym sposobem uzyskania pozycji pliku w szerokim strumieniu jest wywołanie metody fgetpos, a jedynym niezawodnym sposobem przywrócenia pozycji uzyskanej w ten sposób jest wywołanie metody fsetpos.

Zobacz też

Pliki i strumienie
setlocale, _wsetlocale