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 fgetpos
e l'unico modo affidabile per ripristinare una posizione ottenuta in questo modo consiste nel chiamare fsetpos
.