std:: mbsrtowcs
|
Défini dans l'en-tête
<cwchar>
|
||
|
std::
size_t
mbsrtowcs
(
wchar_t
*
dst,
const
char
**
src,
|
||
Convertit une séquence de caractères multioctets terminée par un caractère nul, qui commence dans l'état de conversion décrit par * ps , à partir du tableau dont le premier élément est pointé par * src vers sa représentation en caractères larges. Si dst n'est pas nul, les caractères convertis sont stockés dans les éléments successifs du tableau wchar_t pointé par dst . Pas plus de len caractères larges sont écrits dans le tableau de destination.
Chaque caractère multi-octet est converti comme par un appel à std::mbrtowc . La conversion s'arrête si :
-
Le caractère nul multi-octet a été converti et stocké.
src
est défini sur un pointeur nul et
*psreprésente l'état de décalage initial. - Un caractère multi-octet invalide (selon la locale C actuelle) a été rencontré. src est défini pour pointer au début du premier caractère multi-octet non converti.
- Le prochain caractère large à stocker dépasserait len . src est défini pour pointer au début du premier caractère multi-octet non converti. Cette condition n'est pas vérifiée si dst est un pointeur nul.
Table des matières |
Paramètres
| dst | - | pointeur vers le tableau de caractères larges où les résultats seront stockés |
| src | - | pointeur vers le pointeur du premier élément d'une chaîne multioctet terminée par un caractère nul |
| len | - | nombre de caractères larges disponibles dans le tableau pointé par dst |
| ps | - | pointeur vers l'objet d'état de conversion |
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 caractères. Si dst est un pointeur nul, retourne le nombre de caractères larges qui auraient été écrits avec une longueur illimitée.
En cas d'erreur de conversion (si un caractère multioctet invalide est rencontré), retourne static_cast < std:: size_t > ( - 1 ) , stocke EILSEQ dans errno , et laisse * ps dans un état non spécifié.
Notes
Cette fonction déplace le pointeur src vers la fin de la chaîne multioctet convertie. Cela ne se produit pas si dst est un pointeur nul.
Exemple
#include <clocale> #include <cwchar> #include <iostream> #include <vector> void print_as_wide(const char* mbstr) { std::mbstate_t state = std::mbstate_t(); std::size_t len = 1 + std::mbsrtowcs(nullptr, &mbstr, 0, &state); std::vector<wchar_t> wstr(len); std::mbsrtowcs(&wstr[0], &mbstr, wstr.size(), &state); std::wcout << "Wide string: " << &wstr[0] << '\n' << "The length, including '\\0': " << wstr.size() << '\n'; } int main() { std::setlocale(LC_ALL, "en_US.utf8"); const char* mbstr = "z\u00df\u6c34\U0001f34c"; // or u8"zß水🍌" print_as_wide(mbstr); }
Sortie :
Wide string: zß水🍌 The length, including '\0': 5
Voir aussi
|
convertit le prochain caractère multi-octet en caractère large, avec état donné
(fonction) |
|
|
convertit une chaîne large en chaîne de caractères multi-octets étroite, avec état donné
(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
mbsrtowcs
|
|