std:: wcstombs
|
Défini dans l'en-tête
<cstdlib>
|
||
|
std::
size_t
wcstombs
(
char
*
dst,
const
wchar_t
*
src,
std::
size_t
len
)
;
|
||
Convertit une séquence de caractères larges du tableau dont le premier élément est pointé par src en sa représentation multioctet étroite qui commence dans l'état de décalage initial. Les caractères convertis sont stockés dans les éléments successifs du tableau de caractères pointé par dst . Pas plus de len octets sont écrits dans le tableau de destination.
Chaque caractère est converti comme par un appel à std::wctomb , sauf que l'état de conversion de wctomb n'est pas affecté. La conversion s'arrête si :
- Le caractère nul a été converti et stocké.
- Un wchar_t a été trouvé qui ne correspond pas à un caractère valide dans les paramètres régionaux C actuels.
- Le prochain caractère multi-octets à 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:: wcsrtombs 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 d'octets qui seraient écrits dans dst , s'ils étaient convertis. Un comportement similaire est standard pour std:: wcsrtombs .
Paramètres
| dst | - | pointeur vers le tableau de caractères étroits où le caractère multi-octets sera stocké |
| src | - | pointeur vers le premier élément d'une chaîne large terminée par un caractère nul à convertir |
| len | - | nombre d'octets disponibles dans le tableau pointé par dst |
Valeur de retour
En cas de succès, retourne le nombre d'octets (incluant toute séquence de décalage, mais excluant le caractère de fin ' \0 ' ) écrits dans le tableau de caractères dont le premier élément est pointé par dst .
En cas d'erreur de conversion (si un caractère large 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"); // UTF-8 narrow multibyte encoding const wchar_t* wstr = L"z\u00df\u6c34\U0001d10b"; // or L"zß水𝄋" char mbstr[11]; std::wcstombs(mbstr, wstr, 11); std::cout << "multibyte string: " << mbstr << '\n'; }
Sortie :
multibyte string: zß水𝄋
Voir aussi
|
convertit une chaîne large en chaîne de caractères multioctets étroite, avec état donné
(fonction) |
|
|
convertit une chaîne de caractères multioctets étroite en chaîne large
(fonction) |
|
|
[virtual]
|
convertit une chaîne de
InternT
vers
ExternT
, comme lors de l'écriture dans un fichier
(fonction membre protégée virtuelle de
std::codecvt<InternT,ExternT,StateT>
)
|
|
Documentation C
pour
wcstombs
|
|