Namespaces
Variants

std:: wcstombs

From cppreference.net
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