Flussi di byte e "wide"

Un flusso di byte considera un file come una sequenza di byte. All'interno del programma il flusso è una sequenza di byte identici.

Per contro un flusso wide gestisce un file come sequenza di caratteri multibyte generici, che possono includere un'ampia gamma di regole di codifica. I file di testo e binari sono ancora letti e scritti come descritto in precedenza. All'interno del programma, il flusso è simile alla sequenza corrispondente di caratteri wide. Le conversioni tra le due rappresentazioni si verificano all'interno della libreria C standard. Le regole di conversione possono, in linea di principio, essere modificate da una chiamata a setlocale che modifica la categoria LC_CTYPE. Ogni flusso wide determina le regole di conversione nel momento in cui diventa orientato a livello e mantiene queste regole anche se la categoria LC_CTYPE viene modificata in un secondo momento.

Il posizionamento all'interno di un flusso wide presenta le stesse limitazioni dei flussi di testo. È anche possibile che l'indicatore file-position si trovi a gestire una codifica dipendente dallo stato. In genere questa include sia un offset di byte nel flusso sia un oggetto di tipo mbstate_t. Di conseguenza, l'unico modo affidabile per ottenere una posizione di file all'interno di un flusso wide consiste nel chiamare fgetpose l'unico modo affidabile per ripristinare una posizione ottenuta in questo modo consiste nel chiamare fsetpos.

Vedi anche

File e flussi
setlocale, _wsetlocale