mbstowcs_s
, _mbstowcs_s_l
Convertit une séquence de caractères multioctets en séquence correspondante de caractères larges. Versions de , _mbstowcs_l
avec améliorations dembstowcs
sécurité, comme décrit dans les fonctionnalités de sécurité dans le CRT.
Syntaxe
errno_t mbstowcs_s(
size_t *pReturnValue,
wchar_t *wcstr,
size_t sizeInWords,
const char *mbstr,
size_t count
);
errno_t _mbstowcs_s_l(
size_t *pReturnValue,
wchar_t *wcstr,
size_t sizeInWords,
const char *mbstr,
size_t count,
_locale_t locale
);
template <size_t size>
errno_t mbstowcs_s(
size_t *pReturnValue,
wchar_t (&wcstr)[size],
const char *mbstr,
size_t count
); // C++ only
template <size_t size>
errno_t _mbstowcs_s_l(
size_t *pReturnValue,
wchar_t (&wcstr)[size],
const char *mbstr,
size_t count,
_locale_t locale
); // C++ only
Paramètres
pReturnValue
Nombre de caractères convertis.
wcstr
Adresse de la mémoire tampon pour la chaîne de caractères larges convertie résultante.
sizeInWords
Taille, en mots, de la mémoire tampon wcstr
.
mbstr
Adresse d’une séquence de caractères multioctets se terminant par un caractère Null.
count
Nombre maximal de caractères larges à stocker dans la wcstr
mémoire tampon, sans inclure la valeur Null de fin, ou _TRUNCATE
.
locale
Paramètres régionaux à utiliser.
Valeur retournée
Zéro si l'opération a réussi, un code d'erreur en cas d'échec.
Condition d’erreur | Valeur de retour et errno |
---|---|
wcstr est NULL et sizeInWords > 0 |
EINVAL |
mbstr est NULL |
EINVAL |
La mémoire tampon de destination est trop petite pour contenir la chaîne convertie (à moins que count ait la valeur _TRUNCATE ; consultez les notes ci-dessous) |
ERANGE |
wcstr n’est pas NULL et sizeInWords == 0 |
EINVAL |
Si l’une de ces conditions se produit, l’exception de paramètre non valide est appelée comme décrit dans la validation des paramètres. Si l'exécution est autorisée à continuer, la fonction retourne un code d'erreur et définit errno
, comme indiqué dans le tableau.
Notes
La fonction mbstowcs_s
convertit une chaîne de caractères multioctets désignés par mbstr
en caractères larges stockés dans la mémoire tampon désignée par wcstr
. La conversion se poursuit pour chaque caractère jusqu'à ce qu'une des conditions suivantes soit remplie :
Un caractère multioctet de null est rencontré.
Un caractère multioctet non valide est rencontré.
Le nombre caractères larges stockés dans la mémoire tampon de
wcstr
est égal àcount
.
La chaîne de destination est toujours terminée par null (même s’il existe une erreur).
S’il count
s’agit de la valeur _TRUNCATE
spéciale, mbstowcs_s
convertit autant de chaînes que dans la mémoire tampon de destination, tout en laissant la place pour un terminateur Null.
Si mbstowcs_s
elle convertit correctement la chaîne source, elle place la taille en caractères larges de la chaîne convertie, y compris la marque de fin Null, dans *pReturnValue
(fournie pReturnValue
n’est pas NULL
). La taille est calculée même si l’argument wcstr
est NULL
, et fournit un moyen de déterminer la taille de mémoire tampon requise. Si wcstr
c’est NULL
le cas, count
est ignoré et sizeInWords
doit être 0.
Si la fonction mbstowcs_s
rencontre un caractère multioctet non valide, elle affecte la valeur 0 à *pReturnValue
, définit la mémoire tampon de destination sur une chaîne vide, affecte à errno
la valeur EILSEQ
et retourne EILSEQ
.
Si les séquences pointées par mbstr
et wcstr
se chevauchent, le comportement de mbstowcs_s
n'est pas défini.
Important
Vérifiez que wcstr
et mbstr
ne se chevauchent pas, et que count
reflète correctement le nombre de caractères multioctets à convertir.
La fonction mbstowcs_s
utilise les paramètres régionaux actuels pour tout comportement dépendant des paramètres régionaux ; la fonction _mbstowcs_s_l
est identique, à ceci près qu’elle utilise à la place les paramètres régionaux qui ont été passés. Pour plus d’informations, consultez Locale.
En C++, l’utilisation de ces fonctions est simplifiée par les surcharges de modèle ; les surcharges peuvent déduire la longueur de la mémoire tampon automatiquement (ce qui évite d’avoir à spécifier un argument taille) et peuvent remplacer automatiquement les fonctions plus anciennes et non sécurisées par leurs équivalentes plus récentes et sécurisées. 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.
Spécifications
Routine | En-tête requis |
---|---|
mbstowcs_s |
<stdlib.h> |
_mbstowcs_s_l |
<stdlib.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Voir aussi
Conversion de données
Paramètres régionaux
MultiByteToWideChar
Interprétation des séquences de caractères multioctets
_mbclen
, , mblen
_mblen_l
mbtowc
, _mbtowc_l
wcstombs
, _wcstombs_l
wctomb
, _wctomb_l