Partager via


Flux d’octets et flux larges

Un flux d'octets traite un fichier comme une séquence d'octets. Dans le programme, le flux est la même séquence d’octets.

En revanche, un flux large traite un fichier comme une séquence de caractères multioctets généralisés, qui peut avoir un large éventail de règles de codage. (Les fichiers texte et binaires sont toujours lus et écrits comme décrit précédemment.) Dans le programme, le flux ressemble à la séquence correspondante de caractères larges. Des conversions entre les deux représentations se produisent dans la bibliothèque C standard. Les règles de conversion peuvent, en principe, être modifiées par un appel de setlocale qui modifie la catégorie LC_CTYPE. Chaque flux large détermine ses règles de conversion au moment où il devient orienté large et les conserve même si la catégorie LC_CTYPE change plus tard.

Le positionnement dans un flux large est soumis aux mêmes limitations que pour les flux de texte. En outre, l’indicateur de position de fichier peut également avoir à traiter avec un encodage dépendant de l’état. En règle générale, il inclut à la fois un décalage d’octets dans le flux de données et un objet de type mbstate_t. Par conséquent, la seule méthode fiable pour obtenir une position de fichier dans un flux large est d’appeler fgetpos, et la seule méthode fiable pour restaurer un emplacement obtenu de cette façon est d’appeler fsetpos.

Voir aussi

Fichiers et flux
setlocale, _wsetlocale