Namespaces
Variants

std:: mbstowcs

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