std:: codecvt_byname
| 
           
           Défini dans l'en-tête
            
         
            
             <locale>
            
           
           | 
         ||
| 
           
           
            
             template
            
            
             <
            
            
             class
            
            InternT,
            
             class
            
            ExternT,
            
             class
            
            State
            
             >
            
             
         class codecvt_byname : public std:: codecvt < InternT, ExternT, State > ;  | 
         ||
       
        std::codecvt_byname
       
       est une facette
       
        
         std::codecvt
        
       
       qui encapsule les règles de conversion de caractères multioctets/étendus d'une locale spécifiée lors de sa construction.
      
         Table des matières | 
       
Spécialisations
La bibliothèque standard garantit la fourniture des spécialisations suivantes :
| 
          
          Défini dans l'en-tête
           
        
           
            <locale>
           
          
          | 
       |
| std :: codecvt_byname < char , char , std:: mbstate_t > | conversion identité | 
| 
         
          std
          
           ::
          
          
           codecvt_byname
          
          
           <
          
          
           char16_t
          
          ,
          
           char
          
          ,
          
           
            std::
            
             mbstate_t
            
           
          
          
           >
          
         
          (depuis C++11) (obsolète en C++20)  | 
        conversion entre UTF-16 et UTF-8 | 
| 
         
          std
          
           ::
          
          
           codecvt_byname
          
          
           <
          
          
           char16_t
          
          , char8_t,
          
           
            std::
            
             mbstate_t
            
           
          
          
           >
          
         
          (depuis C++20)  | 
        conversion entre UTF-16 et UTF-8 | 
| 
         
          std
          
           ::
          
          
           codecvt_byname
          
          
           <
          
          
           char32_t
          
          ,
          
           char
          
          ,
          
           
            std::
            
             mbstate_t
            
           
          
          
           >
          
         
          (depuis C++11) (obsolète en C++20)  | 
        conversion entre UTF-32 et UTF-8 | 
| 
         
          std
          
           ::
          
          
           codecvt_byname
          
          
           <
          
          
           char32_t
          
          , char8_t,
          
           
            std::
            
             mbstate_t
            
           
          
          
           >
          
         
          (depuis C++20)  | 
        conversion entre UTF-32 et UTF-8 | 
| std :: codecvt_byname < wchar_t , char , std:: mbstate_t > | conversion spécifique aux paramètres régionaux entre chaîne large et jeux de caractères étroits | 
Fonctions membres
| 
          
           
            
             
              (constructeur)
             
            
           
           
          | 
        
         construit une nouvelle facette
         
          codecvt_byname
         
         (fonction membre publique)  | 
       
| 
          
           
            
             
              (destructeur)
             
            
           
           
          | 
        
         détruit une facette
         
          codecvt_byname
         
         (fonction membre protégée)  | 
       
std::codecvt_byname:: codecvt_byname
| 
            
            
             
              explicit
             
             codecvt_byname
             
              (
             
             
              const
             
             
              char
             
             
              *
             
             name,
             
              
               std::
               
                size_t
               
              
             
             refs
             
              =
             
             
              0
             
             
              )
             
             
              ;
             
            
            
           | 
          ||
| 
            
            
             
              explicit
             
             codecvt_byname
             
              (
             
             
              const
             
             
              
               std::
               
                string
               
              
             
             
              &
             
             name,
             
              
               std::
               
                size_t
               
              
             
             refs
             
              =
             
             
              0
             
             
              )
             
             
              ;
             
            
            
           | 
          (depuis C++11) | |
        Construit un nouveau facet
        
         std::codecvt_byname
        
        pour une locale avec
        
         
          name
         
        
        .
       
refs est utilisé pour la gestion des ressources : si refs == 0 , l'implémentation détruit le facet lorsque le dernier objet std::locale le contenant est détruit. Sinon, l'objet n'est pas détruit.
Paramètres
| name | - | le nom de la locale | 
| refs | - | le nombre de références liées au facet | 
std::codecvt_byname:: ~codecvt_byname
| 
            
            
             
              protected
             
             
              :
             
              
          ~codecvt_byname ( ) ;  | 
          ||
Détruit le facet.
Hérité de std:: codecvt
Types imbriqués
| Type | Définition | 
          
           intern_type
          
          | 
         
          
           internT
          
          | 
        
          
           extern_type
          
          | 
         
          
           externT
          
          | 
        
          
           state_type
          
          | 
         
          
           stateT
          
          | 
        
Membres de données
| Membre | Description | 
          
           
            
             std::locale::id
            
           
          
          
           id
          
          
           [static]
          
          | 
         l'identifiant du facet | 
Fonctions membres
          appelle
          
           do_out
          
          (fonction membre publique de 
            std::codecvt<InternT,ExternT,StateT>
           
           )
          
          | 
        |
          appelle
          
           do_in
          
          (fonction membre publique de 
            std::codecvt<InternT,ExternT,StateT>
           
           )
          
          | 
        |
          appelle
          
           do_unshift
          
          (fonction membre publique de 
            std::codecvt<InternT,ExternT,StateT>
           
           )
          
          | 
        |
          appelle
          
           do_encoding
          
          (fonction membre publique de 
            std::codecvt<InternT,ExternT,StateT>
           
           )
          
          | 
        |
          appelle
          
           do_always_noconv
          
          (fonction membre publique de 
            std::codecvt<InternT,ExternT,StateT>
           
           )
          
          | 
        |
          appelle
          
           do_length
          
          (fonction membre publique de 
            std::codecvt<InternT,ExternT,StateT>
           
           )
          
          | 
        |
          appelle
          
           do_max_length
          
          (fonction membre publique de 
            std::codecvt<InternT,ExternT,StateT>
           
           )
          
          | 
        
Fonctions membres protégées
| 
           
            
             
              
               [virtual]
              
             
            
            
           | 
         
          convertit une chaîne de
          
           InternT
          
          vers
          
           ExternT
          
          , par exemple lors de l'écriture dans un fichier
          (fonction membre protégée virtuelle de 
            std::codecvt<InternT,ExternT,StateT>
           
           )
          
          | 
        
| 
           
            
             
              
               [virtual]
              
             
            
            
           | 
         
          convertit une chaîne de
          
           ExternT
          
          vers
          
           InternT
          
          , par exemple lors de la lecture depuis un fichier
          (fonction membre protégée virtuelle de 
            std::codecvt<InternT,ExternT,StateT>
           
           )
          
          | 
        
| 
           
            
             
              
               [virtual]
              
             
            
            
           | 
         
          génère la séquence de caractères de terminaison
          
           ExternT
          
          pour une conversion incomplète
          (fonction membre protégée virtuelle de 
            std::codecvt<InternT,ExternT,StateT>
           
           )
          
          | 
        
| 
           
            
             
              
               [virtual]
              
             
            
            
           | 
         
          renvoie le nombre de caractères
          
           ExternT
          
          nécessaires pour produire un caractère
          
           InternT
          
          , si constant
          (fonction membre protégée virtuelle de 
            std::codecvt<InternT,ExternT,StateT>
           
           )
          
          | 
        
| 
           
            
             
              
               [virtual]
              
             
            
            
           | 
         
          teste si le facet encode une conversion d'identité pour toutes les valeurs d'argument valides
           (fonction membre protégée virtuelle de 
            std::codecvt<InternT,ExternT,StateT>
           
           )
          
          | 
        
| 
           
            
             
              
               [virtual]
              
             
            
            
           | 
         
          calcule la longueur de la chaîne
          
           ExternT
          
          qui serait consommée par la conversion dans le tampon
          
           InternT
          
          donné
          (fonction membre protégée virtuelle de 
            std::codecvt<InternT,ExternT,StateT>
           
           )
          
          | 
        
| 
           
            
             
              
               [virtual]
              
             
            
            
           | 
         
          renvoie le nombre maximum de caractères
          
           ExternT
          
          qui pourraient être convertis en un seul caractère
          
           InternT
          
          (fonction membre protégée virtuelle de 
            std::codecvt<InternT,ExternT,StateT>
           
           )
          
          | 
        
Hérité de std:: codecvt_base
| Type imbriqué | Définition | 
| enum result { ok, partial, error, noconv } ; | Type d'énumération non-scopée | 
| Constante d'énumération | Définition | 
          
           ok
          
          | 
         la conversion s'est terminée sans erreur | 
          
           partial
          
          | 
         tous les caractères source n'ont pas été convertis | 
          
           error
          
          | 
         un caractère invalide a été rencontré | 
          
           noconv
          
          | 
         aucune conversion nécessaire, les types d'entrée et de sortie sont identiques | 
Exemple
Cet exemple démontre la lecture d'un fichier encodé en GB18030 en utilisant la facette codecvt d'une locale compatible GB18030.
#include <fstream> #include <iostream> #include <locale> #include <string> int main() { // GB18030 narrow multibyte encoding std::ofstream("text.txt") << "\x7a" // letter 'z', U+007a "\x81\x30\x89\x38" // letter 'ß', U+00df "\xcb\xae" // CJK ideogram '水' (water), U+6c34 "\x94\x32\xbc\x35"; // musical sign '𝄋' (segno), U+1d10b std::wifstream fin("text.txt"); fin.imbue(std::locale(fin.getloc(), new std::codecvt_byname<wchar_t, char, std::mbstate_t>("zh_CN.gb18030"))); for (wchar_t c; fin.get(c);) std::cout << std::hex << std::showbase << static_cast<unsigned>(c) << '\n'; }
Sortie possible :
0x7a 0xdf 0x6c34 0x1d10b
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement tel que publié | Comportement correct | 
|---|---|---|---|
| LWG 21 | C++98 | 
         la bibliothèque standard n'avait pas besoin de fournir
          aucune 
          std::codecvt_byname
         
         spécialisation
         | 
        deux spécialisations sont requises | 
Voir aussi
| 
         convertit entre les encodages de caractères, y compris UTF-8, UTF-16, UTF-32
          (modèle de classe)  |