std:: mbstowcs
|
Défini dans l'en-tête
<cstdlib>
|
||
|
std::
size_t
mbstowcs
(
wchar_t
*
dst,
const
char
*
src,
std::
size_t
len
)
;
|
||
Convertit une chaîne de caractères multioctets du tableau dont le premier élément est pointé par src en sa représentation en caractères larges. Les caractères convertis sont stockés dans les éléments successifs du tableau pointé par dst . Pas plus de len caractères larges sont écrits dans le tableau de destination.
Chaque caractère est converti comme par un appel à std::mbtowc , sauf que l'état de conversion mbtowc n'est pas affecté. La conversion s'arrête si :
- Le caractère nul multioctet a été converti et stocké.
- Un caractère multioctet invalide (dans les paramètres régionaux C actuels) a été rencontré.
- Le prochain caractère large à stocker dépasserait len .
Table des matières |
Notes
Dans la plupart des implémentations, cette fonction met à jour un objet statique global de type std::mbstate_t pendant qu'elle traite la chaîne, et ne peut pas être appelée simultanément par deux threads, std::mbsrtowcs devrait être utilisée dans de tels cas.
POSIX spécifie une extension courante : si dst est un pointeur nul, cette fonction retourne le nombre de caractères larges qui seraient écrits dans dst , s'ils étaient convertis. Un comportement similaire est standard pour std::mbsrtowcs .
Paramètres
| dst | - | pointeur vers le tableau de caractères larges où la chaîne large sera stockée |
| src | - | pointeur vers le premier élément d'une chaîne multioctet terminée par un caractère nul à convertir |
| len | - | nombre de caractères larges disponibles dans le tableau pointé par dst |
Valeur de retour
En cas de succès, retourne le nombre de caractères larges, à l'exclusion du caractère de fin L ' \0 ' , écrits dans le tableau de destination.
En cas d'erreur de conversion (si un caractère multioctet non valide a été rencontré), retourne static_cast < std:: size_t > ( - 1 ) .
Exemple
#include <clocale> #include <cstdlib> #include <iostream> int main() { std::setlocale(LC_ALL, "en_US.utf8"); std::wcout.imbue(std::locale("en_US.utf8")); const char* mbstr = "z\u00df\u6c34\U0001f34c"; // or u8"zß水🍌" // or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9f\x8d\x8c"; wchar_t wstr[5]; std::mbstowcs(wstr, mbstr, 5); std::wcout << "wide string: " << wstr << '\n'; }
Sortie :
wide string: zß水🍌
Voir aussi
|
convertit une chaîne de caractères multioctets étroite en chaîne large, avec état donné
(fonction) |
|
|
convertit une chaîne large en chaîne de caractères multioctets étroite
(fonction) |
|
|
[virtual]
|
convertit une chaîne de
ExternT
vers
InternT
, comme lors de la lecture depuis un fichier
(fonction membre protégée virtuelle de
std::codecvt<InternT,ExternT,StateT>
)
|
|
Documentation C
pour
mbstowcs
|
|