mbsrtowcs
Convertit une chaîne de caractères multioctets dans les paramètres régionaux actuels en une chaîne de caractères larges correspondante, avec la capacité de redémarrer au milieu d'un caractère multioctet. Une version plus sécurisée de cette fonction est disponible ; voir mbsrtowcs_s
.
Syntaxe
size_t mbsrtowcs(
wchar_t *wcstr,
const char **mbstr,
sizeof count,
mbstate_t *mbstate
);
template <size_t size>
size_t mbsrtowcs(
wchar_t (&wcstr)[size],
const char **mbstr,
sizeof count,
mbstate_t *mbstate
); // C++ only
Paramètres
wcstr
Adresse où stocker la chaîne de caractères larges convertie.
mbstr
Pointeur indirect vers l'emplacement de la chaîne de caractères multioctets à convertir.
count
Nombre maximal de caractères (et non pas d'octets) à convertir et à stocker dans wcstr
.
mbstate
Un pointeur vers un objet d'état de conversion mbstate_t
. Si cette valeur est un pointeur null, un objet d'état de conversion interne statique est utilisé. Étant donné que l’objet interne mbstate_t
n’est pas thread-safe, nous vous recommandons de toujours passer votre propre mbstate
paramètre.
Valeur retournée
Retourne le nombre de caractères correctement convertis, non compris le caractère null de fin, le cas échéant. Retourne (size_t)(-1) si une erreur s’est produite et est la valeur errno
EILSEQ
.
Notes
La fonction mbsrtowcs
convertit une chaîne de caractères multioctets indirectement pointée par mbstr
en caractères larges stockés dans la mémoire tampon pointée par wcstr
, en utilisant l'état de conversion contenu dans mbstate
. La conversion se poursuit pour chaque caractère jusqu’à ce qu’un caractère multioctet null soit terminé, une séquence multioctet qui ne correspond pas à un caractère valide dans les paramètres régionaux actuels soit rencontrée, soit jusqu’à ce que count
les caractères aient été convertis. Si mbsrtowcs
rencontre le caractère null multioctet (« \0 ») avant ou au moment où count
est atteint, elle le convertit en un caractère null de fin sur 16 bits et s'arrête.
Par conséquent, la chaîne de caractères larges dans wcstr
est terminée par un caractère null seulement si mbsrtowcs
rencontre un caractère null multioctet pendant la conversion. Si les séquences pointées par mbstr
et wcstr
se chevauchent, le comportement de mbsrtowcs
n'est pas défini. mbsrtowcs
est affecté par la LC_TYPE
catégorie des paramètres régionaux actuels.
La mbsrtowcs
fonction diffère de , _mbstowcs_l
par mbstowcs
sa capacité de redémarrage. L'état de la conversion est stocké dans mbstate
pour les appels suivants à la même ou à d'autres fonctions redémarrables. Les résultats ne sont pas définis quand l'utilisation de fonctions redémarrables est combinée avec l'utilisation de fonctions non redémarrables. Par exemple, une application doit utiliser mbsrlen
au lieu de mbslen
, si un appel ultérieur est mbsrtowcs
utilisé au lieu de mbstowcs
.
Si wcstr
ce n’est pas un pointeur Null, l’objet pointeur vers lequel pointe mbstr
un pointeur null est affecté si la conversion s’est arrêtée, car un caractère null de fin a été atteint. Sinon, il est affecté à l’adresse juste après le dernier caractère multioctet converti, le cas échéant. Elle permet à un appel de fonction suivant de redémarrer la conversion où cet appel s’est arrêté.
Si l’argument wcstr
est un pointeur Null, l’argument count
est ignoré et mbsrtowcs
retourne la taille requise en caractères larges pour la chaîne de destination. Si mbstate
est un pointeur null, la fonction utilise un objet d'état de conversion mbstate_t
interne statique qui n'est pas thread-safe. Si la séquence mbstr
de caractères n’a pas de représentation de caractère multioctet correspondante, un -1 est retourné et errno
est défini sur EILSEQ
.
Si mbstr
est un pointeur null, le gestionnaire de paramètres non valides est appelé, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, cette fonction affecte à errno
la valeur EINVAL
et retourne -1.
En C++, cette fonction a une surcharge de modèle qui appelle l'équivalent plus récent et sécurisé de cette fonction. Pour plus d'informations, consultez Sécuriser les surcharges de modèle.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Exceptions
La mbsrtowcs
fonction est sécurisée multithread tant qu’aucune fonction dans les appels setlocale
de thread actuel tant que cette fonction est en cours d’exécution et que l’argument mbstate
n’est pas un pointeur Null.
Spécifications
Routine | En-tête requis |
---|---|
mbsrtowcs |
<wchar.h> |
Voir aussi
Conversion de données
Paramètres régionaux
Interprétation des séquences de caractères multioctets
mbrtowc
mbtowc
, _mbtowc_l
mbstowcs
, _mbstowcs_l
mbsinit